{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#修改路径至期末大作业文件夹\n",
    "import os\n",
    "cwd = os.getcwd()\n",
    "os.chdir('/Users/linzilu/Desktop/期末大作业')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SampleTarget\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sa</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>targettime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>-147771.619605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>188211.926556</td>\n",
       "      <td>4675.528818</td>\n",
       "      <td>NaN</td>\n",
       "      <td>33939.361097</td>\n",
       "      <td>367294.714956</td>\n",
       "      <td>NaN</td>\n",
       "      <td>191791.127128</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-52059.370350</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-78784.288752</td>\n",
       "      <td>-243558.934565</td>\n",
       "      <td>-46265.704896</td>\n",
       "      <td>256696.835487</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>-150470.753867</td>\n",
       "      <td>NaN</td>\n",
       "      <td>206720.786537</td>\n",
       "      <td>2936.962301</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27779.771169</td>\n",
       "      <td>457631.239865</td>\n",
       "      <td>NaN</td>\n",
       "      <td>240529.928927</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-29702.999753</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-60032.437516</td>\n",
       "      <td>-114014.645588</td>\n",
       "      <td>-30447.038129</td>\n",
       "      <td>175266.290243</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>-124702.501707</td>\n",
       "      <td>NaN</td>\n",
       "      <td>132373.430270</td>\n",
       "      <td>96171.666005</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40763.848331</td>\n",
       "      <td>286555.672505</td>\n",
       "      <td>NaN</td>\n",
       "      <td>260677.339207</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-6268.152713</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-79883.521519</td>\n",
       "      <td>-187756.501442</td>\n",
       "      <td>26006.960260</td>\n",
       "      <td>98920.240483</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>-80043.343558</td>\n",
       "      <td>NaN</td>\n",
       "      <td>74790.175567</td>\n",
       "      <td>23694.144989</td>\n",
       "      <td>NaN</td>\n",
       "      <td>44799.597521</td>\n",
       "      <td>36559.662631</td>\n",
       "      <td>NaN</td>\n",
       "      <td>196880.247479</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>32935.541456</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-51472.175158</td>\n",
       "      <td>-174938.981510</td>\n",
       "      <td>39510.251762</td>\n",
       "      <td>169003.864520</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>-84085.400902</td>\n",
       "      <td>NaN</td>\n",
       "      <td>127954.701121</td>\n",
       "      <td>-26211.960777</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8358.608784</td>\n",
       "      <td>14672.876389</td>\n",
       "      <td>NaN</td>\n",
       "      <td>79629.250451</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13982.923854</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-37275.606641</td>\n",
       "      <td>-105490.470765</td>\n",
       "      <td>11306.349980</td>\n",
       "      <td>135740.407725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>77169.597465</td>\n",
       "      <td>-278.548730</td>\n",
       "      <td>54511.866699</td>\n",
       "      <td>-1677.507868</td>\n",
       "      <td>-19989.916041</td>\n",
       "      <td>34700.073258</td>\n",
       "      <td>129343.778576</td>\n",
       "      <td>140959.582861</td>\n",
       "      <td>11268.134809</td>\n",
       "      <td>64114.309836</td>\n",
       "      <td>...</td>\n",
       "      <td>64800.983538</td>\n",
       "      <td>36309.197501</td>\n",
       "      <td>-212970.595343</td>\n",
       "      <td>91883.658490</td>\n",
       "      <td>2908.335777</td>\n",
       "      <td>44915.672785</td>\n",
       "      <td>138278.736625</td>\n",
       "      <td>-65655.316959</td>\n",
       "      <td>20833.954965</td>\n",
       "      <td>-10895.941307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>24883.852252</td>\n",
       "      <td>4527.928752</td>\n",
       "      <td>33801.268039</td>\n",
       "      <td>-2549.251789</td>\n",
       "      <td>-65895.663763</td>\n",
       "      <td>-24075.222624</td>\n",
       "      <td>136134.094189</td>\n",
       "      <td>25908.759588</td>\n",
       "      <td>28197.505165</td>\n",
       "      <td>217731.475909</td>\n",
       "      <td>...</td>\n",
       "      <td>91131.352185</td>\n",
       "      <td>73843.014761</td>\n",
       "      <td>-408747.957618</td>\n",
       "      <td>1885.151015</td>\n",
       "      <td>-22577.143987</td>\n",
       "      <td>187623.082822</td>\n",
       "      <td>-181526.591093</td>\n",
       "      <td>32965.590550</td>\n",
       "      <td>-124420.037119</td>\n",
       "      <td>-54524.222796</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>-102873.911478</td>\n",
       "      <td>6945.409938</td>\n",
       "      <td>72325.300393</td>\n",
       "      <td>5131.850081</td>\n",
       "      <td>25719.530177</td>\n",
       "      <td>-22103.394805</td>\n",
       "      <td>21874.988824</td>\n",
       "      <td>73083.851572</td>\n",
       "      <td>-40603.948710</td>\n",
       "      <td>265531.496865</td>\n",
       "      <td>...</td>\n",
       "      <td>20586.556726</td>\n",
       "      <td>225615.343157</td>\n",
       "      <td>-316569.198183</td>\n",
       "      <td>-90166.633283</td>\n",
       "      <td>-27060.971012</td>\n",
       "      <td>224714.707555</td>\n",
       "      <td>66492.790990</td>\n",
       "      <td>-57780.319257</td>\n",
       "      <td>-133711.918088</td>\n",
       "      <td>-5287.531938</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>-94179.922678</td>\n",
       "      <td>9603.507709</td>\n",
       "      <td>55261.984607</td>\n",
       "      <td>-8021.827359</td>\n",
       "      <td>55088.478846</td>\n",
       "      <td>-54922.312436</td>\n",
       "      <td>137920.914090</td>\n",
       "      <td>155869.445901</td>\n",
       "      <td>-41396.830603</td>\n",
       "      <td>126287.618512</td>\n",
       "      <td>...</td>\n",
       "      <td>167586.301358</td>\n",
       "      <td>177346.164335</td>\n",
       "      <td>-344400.305158</td>\n",
       "      <td>46029.510392</td>\n",
       "      <td>26589.697596</td>\n",
       "      <td>98402.242928</td>\n",
       "      <td>-27899.373475</td>\n",
       "      <td>4457.794484</td>\n",
       "      <td>-114481.492734</td>\n",
       "      <td>29828.982011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>-39570.297701</td>\n",
       "      <td>-7580.100849</td>\n",
       "      <td>79102.660535</td>\n",
       "      <td>-5910.865578</td>\n",
       "      <td>19176.908797</td>\n",
       "      <td>14232.245642</td>\n",
       "      <td>199673.269788</td>\n",
       "      <td>180789.262642</td>\n",
       "      <td>-21643.063473</td>\n",
       "      <td>272607.100164</td>\n",
       "      <td>...</td>\n",
       "      <td>353783.122862</td>\n",
       "      <td>125753.543618</td>\n",
       "      <td>-400257.038097</td>\n",
       "      <td>-12051.023072</td>\n",
       "      <td>-6882.031521</td>\n",
       "      <td>125058.299495</td>\n",
       "      <td>131546.742103</td>\n",
       "      <td>-67877.035916</td>\n",
       "      <td>-109800.228568</td>\n",
       "      <td>117040.177171</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 37 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            a           ag             al            au  \\\n",
       "targettime                                                                \n",
       "20110105145900 -147771.619605          NaN  188211.926556   4675.528818   \n",
       "20110106145900 -150470.753867          NaN  206720.786537   2936.962301   \n",
       "20110107145900 -124702.501707          NaN  132373.430270  96171.666005   \n",
       "20110110145900  -80043.343558          NaN   74790.175567  23694.144989   \n",
       "20110111145900  -84085.400902          NaN  127954.701121 -26211.960777   \n",
       "...                       ...          ...            ...           ...   \n",
       "20220628145900   77169.597465  -278.548730   54511.866699  -1677.507868   \n",
       "20220629145900   24883.852252  4527.928752   33801.268039  -2549.251789   \n",
       "20220630145900 -102873.911478  6945.409938   72325.300393   5131.850081   \n",
       "20220701145900  -94179.922678  9603.507709   55261.984607  -8021.827359   \n",
       "20220704145900  -39570.297701 -7580.100849   79102.660535  -5910.865578   \n",
       "\n",
       "                          bu             c             cf             cs  \\\n",
       "targettime                                                                 \n",
       "20110105145900           NaN  33939.361097  367294.714956            NaN   \n",
       "20110106145900           NaN  27779.771169  457631.239865            NaN   \n",
       "20110107145900           NaN  40763.848331  286555.672505            NaN   \n",
       "20110110145900           NaN  44799.597521   36559.662631            NaN   \n",
       "20110111145900           NaN   8358.608784   14672.876389            NaN   \n",
       "...                      ...           ...            ...            ...   \n",
       "20220628145900 -19989.916041  34700.073258  129343.778576  140959.582861   \n",
       "20220629145900 -65895.663763 -24075.222624  136134.094189   25908.759588   \n",
       "20220630145900  25719.530177 -22103.394805   21874.988824   73083.851572   \n",
       "20220701145900  55088.478846 -54922.312436  137920.914090  155869.445901   \n",
       "20220704145900  19176.908797  14232.245642  199673.269788  180789.262642   \n",
       "\n",
       "                           cu             eb  ...             sa  \\\n",
       "targettime                                    ...                  \n",
       "20110105145900  191791.127128            NaN  ...            NaN   \n",
       "20110106145900  240529.928927            NaN  ...            NaN   \n",
       "20110107145900  260677.339207            NaN  ...            NaN   \n",
       "20110110145900  196880.247479            NaN  ...            NaN   \n",
       "20110111145900   79629.250451            NaN  ...            NaN   \n",
       "...                       ...            ...  ...            ...   \n",
       "20220628145900   11268.134809   64114.309836  ...   64800.983538   \n",
       "20220629145900   28197.505165  217731.475909  ...   91131.352185   \n",
       "20220630145900  -40603.948710  265531.496865  ...   20586.556726   \n",
       "20220701145900  -41396.830603  126287.618512  ...  167586.301358   \n",
       "20220704145900  -21643.063473  272607.100164  ...  353783.122862   \n",
       "\n",
       "                           sc             sn            sp            sr  \\\n",
       "targettime                                                                 \n",
       "20110105145900            NaN            NaN           NaN -52059.370350   \n",
       "20110106145900            NaN            NaN           NaN -29702.999753   \n",
       "20110107145900            NaN            NaN           NaN  -6268.152713   \n",
       "20110110145900            NaN            NaN           NaN  32935.541456   \n",
       "20110111145900            NaN            NaN           NaN  13982.923854   \n",
       "...                       ...            ...           ...           ...   \n",
       "20220628145900   36309.197501 -212970.595343  91883.658490   2908.335777   \n",
       "20220629145900   73843.014761 -408747.957618   1885.151015 -22577.143987   \n",
       "20220630145900  225615.343157 -316569.198183 -90166.633283 -27060.971012   \n",
       "20220701145900  177346.164335 -344400.305158  46029.510392  26589.697596   \n",
       "20220704145900  125753.543618 -400257.038097 -12051.023072  -6882.031521   \n",
       "\n",
       "                           ss             ta              v              y  \\\n",
       "targettime                                                                   \n",
       "20110105145900            NaN  -78784.288752 -243558.934565  -46265.704896   \n",
       "20110106145900            NaN  -60032.437516 -114014.645588  -30447.038129   \n",
       "20110107145900            NaN  -79883.521519 -187756.501442   26006.960260   \n",
       "20110110145900            NaN  -51472.175158 -174938.981510   39510.251762   \n",
       "20110111145900            NaN  -37275.606641 -105490.470765   11306.349980   \n",
       "...                       ...            ...            ...            ...   \n",
       "20220628145900   44915.672785  138278.736625  -65655.316959   20833.954965   \n",
       "20220629145900  187623.082822 -181526.591093   32965.590550 -124420.037119   \n",
       "20220630145900  224714.707555   66492.790990  -57780.319257 -133711.918088   \n",
       "20220701145900   98402.242928  -27899.373475    4457.794484 -114481.492734   \n",
       "20220704145900  125058.299495  131546.742103  -67877.035916 -109800.228568   \n",
       "\n",
       "                           zn  \n",
       "targettime                     \n",
       "20110105145900  256696.835487  \n",
       "20110106145900  175266.290243  \n",
       "20110107145900   98920.240483  \n",
       "20110110145900  169003.864520  \n",
       "20110111145900  135740.407725  \n",
       "...                       ...  \n",
       "20220628145900  -10895.941307  \n",
       "20220629145900  -54524.222796  \n",
       "20220630145900   -5287.531938  \n",
       "20220701145900   29828.982011  \n",
       "20220704145900  117040.177171  \n",
       "\n",
       "[2787 rows x 37 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#读取目标持仓表，并根据量纲不同调整仓位的数量级\n",
    "import pandas as pd\n",
    "filename = input()+\".csv\" #输入目标持仓表，可以是SampleTarget，SampleTarget1，SampleTarget2\n",
    "targetdf = pd.read_csv(filename)\n",
    "targetdf['targettime'] = targetdf['trading_day'].map(str) + targetdf['timestamp'].map(str)\n",
    "targetdf = targetdf.set_index('targettime') #把第一列trading_day和第二列timestamp合并成新列，并作为行index\n",
    "targetdf = targetdf.iloc[:,2:] #保留第3列至最后一列\n",
    "if filename != \"SampleTarget1.csv\": #只有SampleTarget1总仓位为100万，其余总仓位为1\n",
    "    targetdf = targetdf.multiply(1000000) #若总仓位为1，则每个持仓数均放大100万倍，进行统一\n",
    "targetdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['a', 'ag', 'al', 'au', 'bu', 'c', 'cf', 'cs', 'cu', 'eb', 'eg', 'fu', 'hc', 'i', 'l', 'lu', 'm', 'ma', 'ni', 'oi', 'p', 'pb', 'pg', 'pp', 'rb', 'rm', 'ru', 'sa', 'sc', 'sn', 'sp', 'sr', 'ss', 'ta', 'v', 'y', 'zn']\n"
     ]
    }
   ],
   "source": [
    "products = list(targetdf.columns) #目标持仓表包含的全部交易品种\n",
    "print(products)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sa</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011010485900</th>\n",
       "      <td>4491.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16835.0</td>\n",
       "      <td>308.79</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2331.0</td>\n",
       "      <td>28250.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72400.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7180.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10430.0</td>\n",
       "      <td>8420.000000</td>\n",
       "      <td>10520.0</td>\n",
       "      <td>19895.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011010490000</th>\n",
       "      <td>4503.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16890.0</td>\n",
       "      <td>309.14</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2334.0</td>\n",
       "      <td>28195.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72490.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7189.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10400.0</td>\n",
       "      <td>8430.000000</td>\n",
       "      <td>10532.0</td>\n",
       "      <td>19795.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011010490100</th>\n",
       "      <td>4501.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16910.0</td>\n",
       "      <td>309.02</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2337.0</td>\n",
       "      <td>28190.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72500.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7214.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10394.0</td>\n",
       "      <td>8435.000000</td>\n",
       "      <td>10526.0</td>\n",
       "      <td>19800.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011010490200</th>\n",
       "      <td>4498.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16895.0</td>\n",
       "      <td>308.88</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2338.0</td>\n",
       "      <td>28090.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72420.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7215.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10376.0</td>\n",
       "      <td>8425.000000</td>\n",
       "      <td>10526.0</td>\n",
       "      <td>19745.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011010490300</th>\n",
       "      <td>4502.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16880.0</td>\n",
       "      <td>308.32</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2336.0</td>\n",
       "      <td>28080.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72500.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7209.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10394.0</td>\n",
       "      <td>8435.000000</td>\n",
       "      <td>10542.0</td>\n",
       "      <td>19785.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016040685800</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4271.197711</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016081185800</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4964.953896</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20200429240</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5118.713928</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020042972057594038069036</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5113.996219</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011080885800</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>15948.297538</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1321454 rows × 37 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                a  ag       al      au  bu       c       cf  \\\n",
       "2011010485900              4491.0 NaN  16835.0  308.79 NaN  2331.0  28250.0   \n",
       "2011010490000              4503.0 NaN  16890.0  309.14 NaN  2334.0  28195.0   \n",
       "2011010490100              4501.0 NaN  16910.0  309.02 NaN  2337.0  28190.0   \n",
       "2011010490200              4498.0 NaN  16895.0  308.88 NaN  2338.0  28090.0   \n",
       "2011010490300              4502.0 NaN  16880.0  308.32 NaN  2336.0  28080.0   \n",
       "...                           ...  ..      ...     ...  ..     ...      ...   \n",
       "2016040685800                 NaN NaN      NaN     NaN NaN     NaN      NaN   \n",
       "2016081185800                 NaN NaN      NaN     NaN NaN     NaN      NaN   \n",
       "20200429240                   NaN NaN      NaN     NaN NaN     NaN      NaN   \n",
       "2020042972057594038069036     NaN NaN      NaN     NaN NaN     NaN      NaN   \n",
       "2011080885800                 NaN NaN      NaN     NaN NaN     NaN      NaN   \n",
       "\n",
       "                           cs       cu  eb  ...  sa  sc  sn  sp      sr  ss  \\\n",
       "2011010485900             NaN  72400.0 NaN  ... NaN NaN NaN NaN  7180.0 NaN   \n",
       "2011010490000             NaN  72490.0 NaN  ... NaN NaN NaN NaN  7189.0 NaN   \n",
       "2011010490100             NaN  72500.0 NaN  ... NaN NaN NaN NaN  7214.0 NaN   \n",
       "2011010490200             NaN  72420.0 NaN  ... NaN NaN NaN NaN  7215.0 NaN   \n",
       "2011010490300             NaN  72500.0 NaN  ... NaN NaN NaN NaN  7209.0 NaN   \n",
       "...                        ..      ...  ..  ...  ..  ..  ..  ..     ...  ..   \n",
       "2016040685800             NaN      NaN NaN  ... NaN NaN NaN NaN     NaN NaN   \n",
       "2016081185800             NaN      NaN NaN  ... NaN NaN NaN NaN     NaN NaN   \n",
       "20200429240               NaN      NaN NaN  ... NaN NaN NaN NaN     NaN NaN   \n",
       "2020042972057594038069036 NaN      NaN NaN  ... NaN NaN NaN NaN     NaN NaN   \n",
       "2011080885800             NaN      NaN NaN  ... NaN NaN NaN NaN     NaN NaN   \n",
       "\n",
       "                                ta            v        y            zn  \n",
       "2011010485900              10430.0  8420.000000  10520.0  19895.000000  \n",
       "2011010490000              10400.0  8430.000000  10532.0  19795.000000  \n",
       "2011010490100              10394.0  8435.000000  10526.0  19800.000000  \n",
       "2011010490200              10376.0  8425.000000  10526.0  19745.000000  \n",
       "2011010490300              10394.0  8435.000000  10542.0  19785.000000  \n",
       "...                            ...          ...      ...           ...  \n",
       "2016040685800                  NaN  4271.197711      NaN           NaN  \n",
       "2016081185800                  NaN  4964.953896      NaN           NaN  \n",
       "20200429240                    NaN  5118.713928      NaN           NaN  \n",
       "2020042972057594038069036      NaN  5113.996219      NaN           NaN  \n",
       "2011080885800                  NaN          NaN      NaN  15948.297538  \n",
       "\n",
       "[1321454 rows x 37 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#目标：基于ft文件数据，生成上述目标交易品种的价格总表\n",
    "#思路：先选择一个品种，保留收盘价clz，搭建价格总表的框架，其余品种只需遍历后合并即可\n",
    "import pandas as pd\n",
    "os.chdir('/Users/linzilu/Desktop/期末大作业/1m')\n",
    "\n",
    "#读取第一个交易品种的ft文件\n",
    "first = products[0] + \".ft\" \n",
    "pricedf = pd.read_feather(first)\n",
    "#pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple pyarrow\n",
    "#import pyarrow #安装后才可顺利运行pd.read_feather命令，清华镜像比原安装包速度更快\n",
    "pricedf['fttime'] = pricedf['trading_day'].map(str) + pricedf['timestamp'].map(str) #与目标持仓表操作一致\n",
    "pricedf = pricedf.set_index('fttime')\n",
    "pricedf = pricedf.iloc[:,[4]] #收盘价序列clz的索引序号为4\n",
    "pricedf.columns = [products[0]] #变量命名为该交易品种的名称，此处即为a\n",
    "#pricedf\n",
    "\n",
    "#遍历目标交易品种中的其余品种，依次合并到价格总表\n",
    "for i in products[1:]:\n",
    "    filename = i + \".ft\"\n",
    "    newdf = pd.read_feather(filename) #读取第i个交易品种的ft文件\n",
    "    newdf['fttime'] = newdf['trading_day'].map(str) + newdf['timestamp'].map(str)\n",
    "    newdf = newdf.set_index('fttime')\n",
    "    newdf = newdf.iloc[:,[4]] #收盘价序列clz的索引序号为4\n",
    "    newdf.columns = [i]    #变量命名为该交易品种的名称\n",
    "    pricedf = pd.concat([pricedf,newdf],axis=1) #不同交易品种的clz序列按列合并\n",
    "pricedf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sa</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>4475.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16840.000000</td>\n",
       "      <td>299.950000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2329.000000</td>\n",
       "      <td>28270.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>71290.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7188.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10540.000000</td>\n",
       "      <td>8425.000000</td>\n",
       "      <td>10512.000000</td>\n",
       "      <td>19475.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>4540.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16950.000000</td>\n",
       "      <td>298.910000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2332.000000</td>\n",
       "      <td>29270.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72020.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7180.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10704.000000</td>\n",
       "      <td>8525.000000</td>\n",
       "      <td>10798.000000</td>\n",
       "      <td>19845.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>4438.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16850.000000</td>\n",
       "      <td>297.010000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2306.000000</td>\n",
       "      <td>28215.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>69790.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6874.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10350.000000</td>\n",
       "      <td>8155.000000</td>\n",
       "      <td>10586.000000</td>\n",
       "      <td>19130.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>4445.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16880.000000</td>\n",
       "      <td>299.210000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2307.000000</td>\n",
       "      <td>28405.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>70040.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6960.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10398.000000</td>\n",
       "      <td>8120.000000</td>\n",
       "      <td>10544.000000</td>\n",
       "      <td>19115.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>4459.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16850.000000</td>\n",
       "      <td>299.660000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2306.000000</td>\n",
       "      <td>28810.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>70910.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7005.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10410.000000</td>\n",
       "      <td>8145.000000</td>\n",
       "      <td>10610.000000</td>\n",
       "      <td>19215.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>5270.040828</td>\n",
       "      <td>3287.943479</td>\n",
       "      <td>18332.339637</td>\n",
       "      <td>325.230619</td>\n",
       "      <td>2302.142810</td>\n",
       "      <td>3397.377023</td>\n",
       "      <td>16545.392249</td>\n",
       "      <td>3209.970200</td>\n",
       "      <td>72042.903157</td>\n",
       "      <td>10180.135175</td>\n",
       "      <td>...</td>\n",
       "      <td>1719.836956</td>\n",
       "      <td>462.809897</td>\n",
       "      <td>219352.911836</td>\n",
       "      <td>6455.164244</td>\n",
       "      <td>5450.307265</td>\n",
       "      <td>23892.021037</td>\n",
       "      <td>7166.757835</td>\n",
       "      <td>7988.194697</td>\n",
       "      <td>8898.598859</td>\n",
       "      <td>27990.967301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>5239.288673</td>\n",
       "      <td>3231.562420</td>\n",
       "      <td>18176.781085</td>\n",
       "      <td>324.703850</td>\n",
       "      <td>2290.647090</td>\n",
       "      <td>3391.344749</td>\n",
       "      <td>16503.148694</td>\n",
       "      <td>3209.970200</td>\n",
       "      <td>70499.681776</td>\n",
       "      <td>9972.908508</td>\n",
       "      <td>...</td>\n",
       "      <td>1737.985077</td>\n",
       "      <td>462.873505</td>\n",
       "      <td>200478.778543</td>\n",
       "      <td>6429.090297</td>\n",
       "      <td>5421.553092</td>\n",
       "      <td>23621.974398</td>\n",
       "      <td>6908.592400</td>\n",
       "      <td>7875.199891</td>\n",
       "      <td>8814.536521</td>\n",
       "      <td>27725.595393</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>5250.710902</td>\n",
       "      <td>3227.280315</td>\n",
       "      <td>17974.083578</td>\n",
       "      <td>324.259388</td>\n",
       "      <td>2302.642624</td>\n",
       "      <td>3353.944647</td>\n",
       "      <td>16573.554618</td>\n",
       "      <td>3166.822741</td>\n",
       "      <td>70888.262699</td>\n",
       "      <td>10066.010344</td>\n",
       "      <td>...</td>\n",
       "      <td>1731.330766</td>\n",
       "      <td>458.548178</td>\n",
       "      <td>203034.755171</td>\n",
       "      <td>6414.190899</td>\n",
       "      <td>5418.770430</td>\n",
       "      <td>23977.298922</td>\n",
       "      <td>6906.458801</td>\n",
       "      <td>7904.255699</td>\n",
       "      <td>8817.967637</td>\n",
       "      <td>27419.840804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>5210.293783</td>\n",
       "      <td>3105.240303</td>\n",
       "      <td>17818.525026</td>\n",
       "      <td>321.345696</td>\n",
       "      <td>2223.672028</td>\n",
       "      <td>3262.254074</td>\n",
       "      <td>16249.687366</td>\n",
       "      <td>3100.596410</td>\n",
       "      <td>68434.651727</td>\n",
       "      <td>9850.774916</td>\n",
       "      <td>...</td>\n",
       "      <td>1659.948156</td>\n",
       "      <td>443.027890</td>\n",
       "      <td>192450.004901</td>\n",
       "      <td>6280.096315</td>\n",
       "      <td>5392.798918</td>\n",
       "      <td>23273.756364</td>\n",
       "      <td>6705.900529</td>\n",
       "      <td>7715.931022</td>\n",
       "      <td>8359.913676</td>\n",
       "      <td>26433.349582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>5168.119399</td>\n",
       "      <td>3088.111880</td>\n",
       "      <td>17893.947354</td>\n",
       "      <td>322.958927</td>\n",
       "      <td>2238.666445</td>\n",
       "      <td>3280.350897</td>\n",
       "      <td>16244.993637</td>\n",
       "      <td>3128.692430</td>\n",
       "      <td>67346.625142</td>\n",
       "      <td>10110.058524</td>\n",
       "      <td>...</td>\n",
       "      <td>1640.590160</td>\n",
       "      <td>456.194692</td>\n",
       "      <td>197832.590976</td>\n",
       "      <td>6242.847820</td>\n",
       "      <td>5394.654026</td>\n",
       "      <td>23238.223911</td>\n",
       "      <td>6942.729978</td>\n",
       "      <td>7528.682487</td>\n",
       "      <td>8354.767002</td>\n",
       "      <td>26283.356765</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 37 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                          a           ag            al          au  \\\n",
       "20110105145900  4475.000000          NaN  16840.000000  299.950000   \n",
       "20110106145900  4540.000000          NaN  16950.000000  298.910000   \n",
       "20110107145900  4438.000000          NaN  16850.000000  297.010000   \n",
       "20110110145900  4445.000000          NaN  16880.000000  299.210000   \n",
       "20110111145900  4459.000000          NaN  16850.000000  299.660000   \n",
       "...                     ...          ...           ...         ...   \n",
       "20220628145900  5270.040828  3287.943479  18332.339637  325.230619   \n",
       "20220629145900  5239.288673  3231.562420  18176.781085  324.703850   \n",
       "20220630145900  5250.710902  3227.280315  17974.083578  324.259388   \n",
       "20220701145900  5210.293783  3105.240303  17818.525026  321.345696   \n",
       "20220704145900  5168.119399  3088.111880  17893.947354  322.958927   \n",
       "\n",
       "                         bu            c            cf           cs  \\\n",
       "20110105145900          NaN  2329.000000  28270.000000          NaN   \n",
       "20110106145900          NaN  2332.000000  29270.000000          NaN   \n",
       "20110107145900          NaN  2306.000000  28215.000000          NaN   \n",
       "20110110145900          NaN  2307.000000  28405.000000          NaN   \n",
       "20110111145900          NaN  2306.000000  28810.000000          NaN   \n",
       "...                     ...          ...           ...          ...   \n",
       "20220628145900  2302.142810  3397.377023  16545.392249  3209.970200   \n",
       "20220629145900  2290.647090  3391.344749  16503.148694  3209.970200   \n",
       "20220630145900  2302.642624  3353.944647  16573.554618  3166.822741   \n",
       "20220701145900  2223.672028  3262.254074  16249.687366  3100.596410   \n",
       "20220704145900  2238.666445  3280.350897  16244.993637  3128.692430   \n",
       "\n",
       "                          cu            eb  ...           sa          sc  \\\n",
       "20110105145900  71290.000000           NaN  ...          NaN         NaN   \n",
       "20110106145900  72020.000000           NaN  ...          NaN         NaN   \n",
       "20110107145900  69790.000000           NaN  ...          NaN         NaN   \n",
       "20110110145900  70040.000000           NaN  ...          NaN         NaN   \n",
       "20110111145900  70910.000000           NaN  ...          NaN         NaN   \n",
       "...                      ...           ...  ...          ...         ...   \n",
       "20220628145900  72042.903157  10180.135175  ...  1719.836956  462.809897   \n",
       "20220629145900  70499.681776   9972.908508  ...  1737.985077  462.873505   \n",
       "20220630145900  70888.262699  10066.010344  ...  1731.330766  458.548178   \n",
       "20220701145900  68434.651727   9850.774916  ...  1659.948156  443.027890   \n",
       "20220704145900  67346.625142  10110.058524  ...  1640.590160  456.194692   \n",
       "\n",
       "                           sn           sp           sr            ss  \\\n",
       "20110105145900            NaN          NaN  7188.000000           NaN   \n",
       "20110106145900            NaN          NaN  7180.000000           NaN   \n",
       "20110107145900            NaN          NaN  6874.000000           NaN   \n",
       "20110110145900            NaN          NaN  6960.000000           NaN   \n",
       "20110111145900            NaN          NaN  7005.000000           NaN   \n",
       "...                       ...          ...          ...           ...   \n",
       "20220628145900  219352.911836  6455.164244  5450.307265  23892.021037   \n",
       "20220629145900  200478.778543  6429.090297  5421.553092  23621.974398   \n",
       "20220630145900  203034.755171  6414.190899  5418.770430  23977.298922   \n",
       "20220701145900  192450.004901  6280.096315  5392.798918  23273.756364   \n",
       "20220704145900  197832.590976  6242.847820  5394.654026  23238.223911   \n",
       "\n",
       "                          ta            v             y            zn  \n",
       "20110105145900  10540.000000  8425.000000  10512.000000  19475.000000  \n",
       "20110106145900  10704.000000  8525.000000  10798.000000  19845.000000  \n",
       "20110107145900  10350.000000  8155.000000  10586.000000  19130.000000  \n",
       "20110110145900  10398.000000  8120.000000  10544.000000  19115.000000  \n",
       "20110111145900  10410.000000  8145.000000  10610.000000  19215.000000  \n",
       "...                      ...          ...           ...           ...  \n",
       "20220628145900   7166.757835  7988.194697   8898.598859  27990.967301  \n",
       "20220629145900   6908.592400  7875.199891   8814.536521  27725.595393  \n",
       "20220630145900   6906.458801  7904.255699   8817.967637  27419.840804  \n",
       "20220701145900   6705.900529  7715.931022   8359.913676  26433.349582  \n",
       "20220704145900   6942.729978  7528.682487   8354.767002  26283.356765  \n",
       "\n",
       "[2787 rows x 37 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#目标持仓表time是价格总表time的子集，因此只保留目标交易时点对应的价格数据\n",
    "tradetime = list(targetdf.index) #目标持仓表中2787个交易时点\n",
    "tradepricedf = pricedf.loc[tradetime] #以目标交易时点对价格总表进行切片\n",
    "tradepricedf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[['20110105145900', 'fu'], ['20110106145900', 'fu'], ['20110107145900', 'fu'], ['20110110145900', 'fu'], ['20110111145900', 'fu'], ['20110112145900', 'fu'], ['20110113145900', 'fu'], ['20110114145900', 'fu'], ['20110117145900', 'fu'], ['20110118145900', 'fu'], ['20110119145900', 'fu'], ['20110120145900', 'fu'], ['20110121145900', 'fu'], ['20110124145900', 'fu'], ['20110125145900', 'fu'], ['20110126145900', 'fu'], ['20110127145900', 'fu'], ['20110128145900', 'fu'], ['20110131145900', 'fu'], ['20110209145900', 'fu'], ['20110210145900', 'fu'], ['20110211145900', 'fu'], ['20110214145900', 'fu'], ['20110215145900', 'fu'], ['20110216145900', 'fu'], ['20110217145900', 'fu'], ['20110218145900', 'fu'], ['20110222145900', 'fu'], ['20110223145900', 'fu'], ['20110224145900', 'fu'], ['20110225145900', 'fu'], ['20110228145900', 'fu'], ['20110301145900', 'fu'], ['20110302145900', 'fu'], ['20110303145900', 'fu'], ['20110304145900', 'fu'], ['20110307145900', 'fu'], ['20110308145900', 'fu'], ['20110309145900', 'fu'], ['20110310145900', 'fu'], ['20110311145900', 'fu'], ['20110314145900', 'fu'], ['20110315145900', 'fu'], ['20110316145900', 'fu'], ['20110317145900', 'fu'], ['20110318145900', 'fu'], ['20110321145900', 'fu'], ['20110322145900', 'fu'], ['20110323145900', 'fu'], ['20110324145900', 'fu'], ['20110325145900', 'fu'], ['20110328145900', 'fu'], ['20110329145900', 'fu'], ['20110330145900', 'fu'], ['20110331145900', 'fu'], ['20110401145900', 'fu'], ['20110406145900', 'fu'], ['20110407145900', 'fu'], ['20110408145900', 'fu'], ['20110411145900', 'fu'], ['20110412145900', 'fu'], ['20110413145900', 'fu'], ['20110414145900', 'fu'], ['20110415145900', 'fu'], ['20110418145900', 'fu'], ['20110419145900', 'fu'], ['20110420145900', 'fu'], ['20110421145900', 'fu'], ['20110422145900', 'fu'], ['20110425145900', 'fu'], ['20110426145900', 'fu'], ['20110427145900', 'fu'], ['20110429145900', 'fu'], ['20110503145900', 'fu'], ['20110504145900', 'fu'], ['20110505145900', 'fu'], ['20110506145900', 'fu'], ['20110512145900', 'fu'], ['20110513145900', 'fu'], ['20110516145900', 'fu'], ['20110517145900', 'fu'], ['20110518145900', 'fu'], ['20110519145900', 'fu'], ['20110520145900', 'fu'], ['20110523145900', 'fu'], ['20110524145900', 'fu'], ['20110525145900', 'fu'], ['20110526145900', 'fu'], ['20110527145900', 'fu'], ['20110530145900', 'fu'], ['20110531145900', 'fu'], ['20110601145900', 'fu'], ['20110602145900', 'fu'], ['20110603145900', 'fu'], ['20110607145900', 'fu'], ['20110608145900', 'fu'], ['20110609145900', 'fu'], ['20110610145900', 'fu'], ['20110613145900', 'fu'], ['20110614145900', 'fu'], ['20110615145900', 'fu'], ['20110616145900', 'fu'], ['20110617145900', 'fu'], ['20110620145900', 'fu'], ['20110621145900', 'fu'], ['20110622145900', 'fu'], ['20110623145900', 'fu'], ['20110624145900', 'fu'], ['20110627145900', 'fu'], ['20110628145900', 'fu'], ['20110629145900', 'fu'], ['20110630145900', 'fu'], ['20110701145900', 'fu'], ['20110704145900', 'fu'], ['20110705145900', 'fu'], ['20110706145900', 'fu'], ['20110707145900', 'fu'], ['20110708145900', 'fu'], ['20110711145900', 'fu'], ['20110712145900', 'fu'], ['20110713145900', 'fu'], ['20110714145900', 'fu'], ['20110715145900', 'fu'], ['20110718145900', 'fu'], ['20110719145900', 'fu'], ['20110720145900', 'fu'], ['20110721145900', 'fu'], ['20110722145900', 'fu'], ['20110725145900', 'fu'], ['20110726145900', 'fu'], ['20110727145900', 'fu'], ['20110728145900', 'fu'], ['20110729145900', 'fu'], ['20110801145900', 'fu'], ['20110802145900', 'fu'], ['20110803145900', 'fu'], ['20110804145900', 'fu'], ['20110805145900', 'fu'], ['20110808145900', 'fu'], ['20110809145900', 'fu'], ['20110810145900', 'fu'], ['20110811145900', 'fu'], ['20110812145900', 'fu'], ['20110815145900', 'fu'], ['20110816145900', 'fu'], ['20110817145900', 'fu'], ['20110818145900', 'fu'], ['20110819145900', 'fu'], ['20110822145900', 'fu'], ['20110823145900', 'fu'], ['20110824145900', 'fu'], ['20110825145900', 'fu'], ['20110826145900', 'fu'], ['20110829145900', 'fu'], ['20110830145900', 'fu'], ['20110831145900', 'fu'], ['20110901145900', 'fu'], ['20110902145900', 'fu'], ['20110905145900', 'fu'], ['20110906145900', 'fu'], ['20110907145900', 'fu'], ['20110908145900', 'fu'], ['20110909145900', 'fu'], ['20110913145900', 'fu'], ['20110914145900', 'fu'], ['20110915145900', 'fu'], ['20110916145900', 'fu'], ['20110919145900', 'fu'], ['20110920145900', 'fu'], ['20110921145900', 'fu'], ['20110922145900', 'fu'], ['20110923145900', 'fu'], ['20110926145900', 'fu'], ['20110927145900', 'fu'], ['20110928145900', 'fu'], ['20110929145900', 'fu'], ['20110930145900', 'fu'], ['20111010145900', 'cf'], ['20111010145900', 'fu'], ['20111010145900', 'sr'], ['20111010145900', 'ta'], ['20111011145900', 'fu'], ['20111012145900', 'fu'], ['20111013145900', 'fu'], ['20111014145900', 'fu'], ['20111017145900', 'fu'], ['20111018145900', 'fu'], ['20111019145900', 'fu'], ['20111020145900', 'fu'], ['20111021145900', 'fu'], ['20111024145900', 'fu'], ['20111025145900', 'fu'], ['20111026145900', 'fu'], ['20111027145900', 'fu'], ['20111028145900', 'fu'], ['20111031145900', 'fu'], ['20111101145900', 'fu'], ['20111102145900', 'fu'], ['20111103145900', 'fu'], ['20111104145900', 'fu'], ['20111107145900', 'fu'], ['20111108145900', 'fu'], ['20111109145900', 'fu'], ['20111110145900', 'fu'], ['20111111145900', 'fu'], ['20111114145900', 'fu'], ['20111115145900', 'fu'], ['20111116145900', 'fu'], ['20111117145900', 'fu'], ['20111118145900', 'fu'], ['20111121145900', 'fu'], ['20111122145900', 'fu'], ['20111123145900', 'fu'], ['20111124145900', 'fu'], ['20111125145900', 'fu'], ['20111128145900', 'fu'], ['20111129145900', 'fu'], ['20111130145900', 'fu'], ['20111201145900', 'fu'], ['20111202145900', 'fu'], ['20111205145900', 'fu'], ['20111206145900', 'fu'], ['20111207145900', 'fu'], ['20111208145900', 'fu'], ['20111209145900', 'fu'], ['20111212145900', 'fu'], ['20111213145900', 'fu'], ['20111214145900', 'fu'], ['20111215145900', 'fu'], ['20111216145900', 'fu'], ['20111219145900', 'fu'], ['20111220145900', 'fu'], ['20111221145900', 'fu'], ['20111222145900', 'fu'], ['20111223145900', 'fu'], ['20111226145900', 'fu'], ['20111227145900', 'fu'], ['20111228145900', 'fu'], ['20111229145900', 'fu'], ['20111230145900', 'fu'], ['20120104145900', 'fu'], ['20120105145900', 'fu'], ['20120106145900', 'fu'], ['20120109145900', 'fu'], ['20120110145900', 'fu'], ['20120111145900', 'fu'], ['20120112145900', 'fu'], ['20120113145900', 'fu'], ['20120116145900', 'fu'], ['20120117145900', 'fu'], ['20120118145900', 'fu'], ['20120119145900', 'fu'], ['20120120145900', 'fu'], ['20120130145900', 'fu'], ['20120131145900', 'fu'], ['20120201145900', 'fu'], ['20120202145900', 'fu'], ['20120203145900', 'fu'], ['20120206145900', 'fu'], ['20120207145900', 'fu'], ['20120208145900', 'fu'], ['20120209145900', 'fu'], ['20120210145900', 'fu'], ['20120213145900', 'fu'], ['20120214145900', 'fu'], ['20120215145900', 'fu'], ['20120216145900', 'fu'], ['20120217145900', 'fu'], ['20120220145900', 'fu'], ['20120221145900', 'fu'], ['20120222145900', 'fu'], ['20120223145900', 'fu'], ['20120224145900', 'fu'], ['20120227145900', 'fu'], ['20120228145900', 'fu'], ['20120229145900', 'fu'], ['20120301145900', 'fu'], ['20120302145900', 'fu'], ['20120305145900', 'fu'], ['20120306145900', 'fu'], ['20120307145900', 'fu'], ['20120308145900', 'fu'], ['20120309145900', 'fu'], ['20120312145900', 'fu'], ['20120313145900', 'fu'], ['20120314145900', 'fu'], ['20120315145900', 'fu'], ['20120316145900', 'fu'], ['20120319145900', 'fu'], ['20120320145900', 'fu'], ['20120321145900', 'fu'], ['20120322145900', 'fu'], ['20120323145900', 'fu'], ['20120326145900', 'fu'], ['20120327145900', 'fu'], ['20120328145900', 'fu'], ['20120329145900', 'fu'], ['20120330145900', 'fu'], ['20120405145900', 'fu'], ['20120406145900', 'fu'], ['20120409145900', 'fu'], ['20120410145900', 'fu'], ['20120411145900', 'fu'], ['20120412145900', 'fu'], ['20120413145900', 'fu'], ['20120416145900', 'fu'], ['20120417145900', 'fu'], ['20120418145900', 'fu'], ['20120419145900', 'fu'], ['20120420145900', 'fu'], ['20120423145900', 'fu'], ['20120424145900', 'fu'], ['20120425145900', 'fu'], ['20120426145900', 'fu'], ['20120427145900', 'fu'], ['20120502145900', 'fu'], ['20120503145900', 'fu'], ['20120504145900', 'fu'], ['20120507145900', 'fu'], ['20120508145900', 'fu'], ['20120509145900', 'fu'], ['20120510145900', 'fu'], ['20120511145900', 'fu'], ['20120514145900', 'fu'], ['20120515145900', 'fu'], ['20120516145900', 'fu'], ['20120517145900', 'fu'], ['20120518145900', 'fu'], ['20120521145900', 'fu'], ['20120522145900', 'fu'], ['20120523145900', 'fu'], ['20120524145900', 'fu'], ['20120525145900', 'fu'], ['20120528145900', 'fu'], ['20120529145900', 'fu'], ['20120530145900', 'fu'], ['20120531145900', 'fu'], ['20120601145900', 'fu'], ['20120604145900', 'fu'], ['20120605145900', 'fu'], ['20120606145900', 'fu'], ['20120607145900', 'fu'], ['20120608145900', 'fu'], ['20120611145900', 'fu'], ['20120612145900', 'fu'], ['20120613145900', 'fu'], ['20120614145900', 'fu'], ['20120615145900', 'fu'], ['20120618145900', 'fu'], ['20120619145900', 'fu'], ['20120620145900', 'fu'], ['20120621145900', 'fu'], ['20120625145900', 'fu'], ['20120626145900', 'fu'], ['20120627145900', 'fu'], ['20120628145900', 'fu'], ['20120629145900', 'fu'], ['20120702145900', 'fu'], ['20120703145900', 'fu'], ['20120704145900', 'fu'], ['20120705145900', 'fu'], ['20120706145900', 'fu'], ['20120709145900', 'fu'], ['20120710145900', 'fu'], ['20120711145900', 'fu'], ['20120712145900', 'fu'], ['20120713145900', 'fu'], ['20120716145900', 'fu'], ['20120717145900', 'fu'], ['20120718145900', 'fu'], ['20120719145900', 'fu'], ['20120720145900', 'fu'], ['20120723145900', 'fu'], ['20120724145900', 'fu'], ['20120725145900', 'fu'], ['20120726145900', 'fu'], ['20120727145900', 'fu'], ['20120730145900', 'fu'], ['20120731145900', 'fu'], ['20120801145900', 'fu'], ['20120802145900', 'fu'], ['20120803145900', 'fu'], ['20120806145900', 'fu'], ['20120807145900', 'fu'], ['20120808145900', 'fu'], ['20120809145900', 'fu'], ['20120810145900', 'fu'], ['20120813145900', 'fu'], ['20120814145900', 'fu'], ['20120815145900', 'fu'], ['20120816145900', 'fu'], ['20120817145900', 'fu'], ['20120820145900', 'fu'], ['20120821145900', 'fu'], ['20120822145900', 'fu'], ['20120823145900', 'fu'], ['20120824145900', 'fu'], ['20120827145900', 'fu'], ['20120828145900', 'fu'], ['20120829145900', 'fu'], ['20120830145900', 'fu'], ['20120831145900', 'fu'], ['20120903145900', 'fu'], ['20120904145900', 'fu'], ['20120905145900', 'fu'], ['20120906145900', 'fu'], ['20120907145900', 'fu'], ['20120910145900', 'fu'], ['20120911145900', 'fu'], ['20120912145900', 'fu'], ['20120913145900', 'fu'], ['20120914145900', 'fu'], ['20120917145900', 'fu'], ['20120918145900', 'fu'], ['20120919145900', 'fu'], ['20120920145900', 'fu'], ['20120921145900', 'fu'], ['20120924145900', 'fu'], ['20120925145900', 'fu'], ['20120926145900', 'fu'], ['20120927145900', 'fu'], ['20120928145900', 'fu'], ['20121008145900', 'fu'], ['20121009145900', 'fu'], ['20121010145900', 'fu'], ['20121011145900', 'fu'], ['20121012145900', 'fu'], ['20121015145900', 'fu'], ['20121016145900', 'fu'], ['20121017145900', 'fu'], ['20121018145900', 'fu'], ['20121019145900', 'fu'], ['20121022145900', 'fu'], ['20121023145900', 'fu'], ['20121024145900', 'fu'], ['20121025145900', 'fu'], ['20121026145900', 'fu'], ['20121029145900', 'fu'], ['20121030145900', 'fu'], ['20121031145900', 'fu'], ['20121101145900', 'fu'], ['20121102145900', 'fu'], ['20121105145900', 'fu'], ['20121106145900', 'fu'], ['20121107145900', 'fu'], ['20121108145900', 'fu'], ['20121109145900', 'fu'], ['20121112145900', 'fu'], ['20121113145900', 'fu'], ['20121114145900', 'fu'], ['20121115145900', 'fu'], ['20121116145900', 'fu'], ['20121119145900', 'fu'], ['20121120145900', 'fu'], ['20121121145900', 'fu'], ['20121122145900', 'fu'], ['20121123145900', 'fu'], ['20121126145900', 'fu'], ['20121127145900', 'fu'], ['20121128145900', 'fu'], ['20121129145900', 'fu'], ['20121130145900', 'fu'], ['20121203145900', 'fu'], ['20121204145900', 'fu'], ['20121205145900', 'fu'], ['20121206145900', 'fu'], ['20121207145900', 'fu'], ['20121210145900', 'fu'], ['20121211145900', 'fu'], ['20121212145900', 'fu'], ['20121213145900', 'fu'], ['20121214145900', 'fu'], ['20121217145900', 'fu'], ['20121218145900', 'fu'], ['20121219145900', 'fu'], ['20121220145900', 'fu'], ['20121221145900', 'fu'], ['20121224145900', 'fu'], ['20121225145900', 'fu'], ['20121226145900', 'fu'], ['20121227145900', 'fu'], ['20121228145900', 'fu'], ['20121231145900', 'fu'], ['20130104145900', 'fu'], ['20130107145900', 'fu'], ['20130108145900', 'fu'], ['20130109145900', 'fu'], ['20130110145900', 'fu'], ['20130111145900', 'fu'], ['20130114145900', 'fu'], ['20130115145900', 'fu'], ['20130116145900', 'fu'], ['20130117145900', 'fu'], ['20130118145900', 'fu'], ['20130121145900', 'fu'], ['20130122145900', 'fu'], ['20130123145900', 'fu'], ['20130124145900', 'fu'], ['20130125145900', 'fu'], ['20130128145900', 'fu'], ['20130129145900', 'fu'], ['20130130145900', 'fu'], ['20130131145900', 'fu'], ['20130201145900', 'fu'], ['20130204145900', 'fu'], ['20130205145900', 'fu'], ['20130206145900', 'fu'], ['20130207145900', 'fu'], ['20130208145900', 'fu'], ['20130218145900', 'fu'], ['20130219145900', 'fu'], ['20130220145900', 'fu'], ['20130221145900', 'fu'], ['20130222145900', 'fu'], ['20130225145900', 'fu'], ['20130226145900', 'fu'], ['20130227145900', 'fu'], ['20130228145900', 'fu'], ['20130301145900', 'fu'], ['20130304145900', 'fu'], ['20130305145900', 'fu'], ['20130306145900', 'fu'], ['20130307145900', 'fu'], ['20130308145900', 'fu'], ['20130311145900', 'fu'], ['20130312145900', 'fu'], ['20130313145900', 'fu'], ['20130314145900', 'fu'], ['20130315145900', 'fu'], ['20130318145900', 'fu'], ['20130319145900', 'fu'], ['20130320145900', 'fu'], ['20130321145900', 'fu'], ['20130322145900', 'fu'], ['20130325145900', 'fu'], ['20130326145900', 'fu'], ['20130327145900', 'fu'], ['20130328145900', 'fu'], ['20130329145900', 'fu'], ['20130401145900', 'fu'], ['20130402145900', 'fu'], ['20130403145900', 'fu'], ['20130408145900', 'fu'], ['20130409145900', 'fu'], ['20130410145900', 'fu'], ['20130411145900', 'fu'], ['20130412145900', 'fu'], ['20130415145900', 'fu'], ['20130416145900', 'fu'], ['20130417145900', 'fu'], ['20130418145900', 'fu'], ['20130419145900', 'fu'], ['20130422145900', 'fu'], ['20130423145900', 'fu'], ['20130424145900', 'fu'], ['20130425145900', 'fu'], ['20130426145900', 'fu'], ['20130502145900', 'fu'], ['20130503145900', 'fu'], ['20130506145900', 'fu'], ['20130507145900', 'fu'], ['20130508145900', 'fu'], ['20130509145900', 'fu'], ['20130510145900', 'fu'], ['20130513145900', 'fu'], ['20130514145900', 'fu'], ['20130515145900', 'fu'], ['20130516145900', 'fu'], ['20130517145900', 'fu'], ['20130520145900', 'fu'], ['20130521145900', 'fu'], ['20130522145900', 'fu'], ['20130523145900', 'fu'], ['20130524145900', 'fu'], ['20130527145900', 'fu'], ['20130528145900', 'fu'], ['20130529145900', 'fu'], ['20130530145900', 'fu'], ['20130531145900', 'fu'], ['20130603145900', 'fu'], ['20130604145900', 'fu'], ['20130605145900', 'fu'], ['20130606145900', 'fu'], ['20130607145900', 'fu'], ['20130613145900', 'fu'], ['20130614145900', 'fu'], ['20130617145900', 'fu'], ['20130618145900', 'fu'], ['20130619145900', 'fu'], ['20130620145900', 'fu'], ['20130621145900', 'fu'], ['20130624145900', 'fu'], ['20130625145900', 'fu'], ['20130626145900', 'fu'], ['20130627145900', 'fu'], ['20130628145900', 'fu'], ['20130701145900', 'fu'], ['20130702145900', 'fu'], ['20130703145900', 'fu'], ['20130704145900', 'fu'], ['20130705145900', 'fu'], ['20130708145900', 'fu'], ['20130709145900', 'fu'], ['20130710145900', 'fu'], ['20130711145900', 'fu'], ['20130712145900', 'fu'], ['20130715145900', 'fu'], ['20130716145900', 'fu'], ['20130717145900', 'fu'], ['20130718145900', 'fu'], ['20130719145900', 'fu'], ['20130722145900', 'fu'], ['20130723145900', 'fu'], ['20130724145900', 'fu'], ['20130725145900', 'fu'], ['20130726145900', 'fu'], ['20130729145900', 'fu'], ['20130730145900', 'fu'], ['20130731145900', 'fu'], ['20130801145900', 'fu'], ['20130802145900', 'fu'], ['20130805145900', 'fu'], ['20130806145900', 'fu'], ['20130807145900', 'fu'], ['20130808145900', 'fu'], ['20130809145900', 'fu'], ['20130812145900', 'fu'], ['20130813145900', 'fu'], ['20130814145900', 'fu'], ['20130815145900', 'fu'], ['20130816145900', 'fu'], ['20130819145900', 'fu'], ['20130820145900', 'fu'], ['20130821145900', 'fu'], ['20130822145900', 'fu'], ['20130823145900', 'fu'], ['20130826145900', 'fu'], ['20130827145900', 'fu'], ['20130828145900', 'fu'], ['20130829145900', 'fu'], ['20130830145900', 'fu'], ['20130902145900', 'fu'], ['20130903145900', 'fu'], ['20130904145900', 'fu'], ['20130905145900', 'fu'], ['20130906145900', 'fu'], ['20130909145900', 'fu'], ['20130910145900', 'fu'], ['20130911145900', 'fu'], ['20130912145900', 'fu'], ['20130913145900', 'fu'], ['20130916145900', 'fu'], ['20130917145900', 'fu'], ['20130918145900', 'fu'], ['20130923145900', 'fu'], ['20130924145900', 'fu'], ['20130925145900', 'fu'], ['20130926145900', 'fu'], ['20130927145900', 'fu'], ['20130930145900', 'fu'], ['20131008145900', 'fu'], ['20131009145900', 'fu'], ['20131010145900', 'fu'], ['20131011145900', 'fu'], ['20131014145900', 'fu'], ['20131015145900', 'fu'], ['20131016145900', 'fu'], ['20131017145900', 'fu'], ['20131018145900', 'fu'], ['20131021145900', 'fu'], ['20131022145900', 'fu'], ['20131023145900', 'fu'], ['20131024145900', 'fu'], ['20131025145900', 'fu'], ['20131028145900', 'fu'], ['20131029145900', 'fu'], ['20131030145900', 'fu'], ['20131031145900', 'fu'], ['20131101145900', 'fu'], ['20131104145900', 'fu'], ['20131105145900', 'fu'], ['20131106145900', 'fu'], ['20131107145900', 'fu'], ['20131108145900', 'fu'], ['20131111145900', 'fu'], ['20131112145900', 'fu'], ['20131113145900', 'fu'], ['20131114145900', 'fu'], ['20131115145900', 'fu'], ['20131118145900', 'fu'], ['20131119145900', 'fu'], ['20131120145900', 'fu'], ['20131121145900', 'fu'], ['20131122145900', 'fu'], ['20131125145900', 'fu'], ['20131126145900', 'fu'], ['20131127145900', 'fu'], ['20131128145900', 'fu'], ['20131129145900', 'fu'], ['20131202145900', 'fu'], ['20131203145900', 'fu'], ['20131204145900', 'fu'], ['20131205145900', 'fu'], ['20131206145900', 'fu'], ['20131209145900', 'fu'], ['20131210145900', 'fu'], ['20131211145900', 'fu'], ['20131212145900', 'fu'], ['20131213145900', 'fu'], ['20131216145900', 'fu'], ['20131217145900', 'fu'], ['20131218145900', 'fu'], ['20131219145900', 'fu'], ['20131220145900', 'fu'], ['20131223145900', 'fu'], ['20131224145900', 'fu'], ['20131225145900', 'fu'], ['20131226145900', 'fu'], ['20131227145900', 'fu'], ['20131230145900', 'fu'], ['20131231145900', 'fu'], ['20140102145900', 'fu'], ['20140103145900', 'fu'], ['20140106145900', 'fu'], ['20140107145900', 'fu'], ['20140108145900', 'fu'], ['20140109145900', 'fu'], ['20140110145900', 'fu'], ['20140113145900', 'fu'], ['20140114145900', 'fu'], ['20140115145900', 'fu'], ['20140116145900', 'fu'], ['20140117145900', 'fu'], ['20140120145900', 'fu'], ['20140121145900', 'fu'], ['20140122145900', 'fu'], ['20140123145900', 'fu'], ['20140124145900', 'fu'], ['20140127145900', 'fu'], ['20140128145900', 'fu'], ['20140129145900', 'fu'], ['20140130145900', 'fu'], ['20140207145900', 'fu'], ['20140210145900', 'fu'], ['20140211145900', 'fu'], ['20140212145900', 'fu'], ['20140213145900', 'fu'], ['20140214145900', 'fu'], ['20140217145900', 'fu'], ['20140218145900', 'fu'], ['20140219145900', 'fu'], ['20140220145900', 'fu'], ['20140221145900', 'fu'], ['20140224145900', 'fu'], ['20140225145900', 'fu'], ['20140226145900', 'fu'], ['20140227145900', 'fu'], ['20140228145900', 'fu'], ['20140303145900', 'fu'], ['20140304145900', 'fu'], ['20140305145900', 'fu'], ['20140306145900', 'fu'], ['20140307145900', 'fu'], ['20140310145900', 'fu'], ['20140311145900', 'fu'], ['20140312145900', 'fu'], ['20140313145900', 'fu'], ['20140314145900', 'fu'], ['20140317145900', 'fu'], ['20140318145900', 'fu'], ['20140319145900', 'fu'], ['20140320145900', 'fu'], ['20140321145900', 'fu'], ['20140324145900', 'fu'], ['20140325145900', 'fu'], ['20140326145900', 'fu'], ['20140327145900', 'fu'], ['20140328145900', 'fu'], ['20140331145900', 'fu'], ['20140401145900', 'fu'], ['20140402145900', 'fu'], ['20140403145900', 'fu'], ['20140404145900', 'fu'], ['20140408145900', 'fu'], ['20140409145900', 'fu'], ['20140410145900', 'fu'], ['20140411145900', 'fu'], ['20140414145900', 'fu'], ['20140415145900', 'fu'], ['20140416145900', 'fu'], ['20140417145900', 'fu'], ['20140418145900', 'fu'], ['20140421145900', 'fu'], ['20140422145900', 'fu'], ['20140423145900', 'fu'], ['20140424145900', 'fu'], ['20140425145900', 'fu'], ['20140428145900', 'fu'], ['20140429145900', 'fu'], ['20140430145900', 'fu'], ['20140505145900', 'fu'], ['20140506145900', 'fu'], ['20140507145900', 'fu'], ['20140508145900', 'fu'], ['20140509145900', 'fu'], ['20140512145900', 'fu'], ['20140513145900', 'fu'], ['20140514145900', 'fu'], ['20140515145900', 'fu'], ['20140516145900', 'fu'], ['20140519145900', 'fu'], ['20140520145900', 'fu'], ['20140521145900', 'fu'], ['20140522145900', 'fu'], ['20140523145900', 'fu'], ['20140526145900', 'fu'], ['20140527145900', 'fu'], ['20140528145900', 'fu'], ['20140529145900', 'fu'], ['20140530145900', 'fu'], ['20140603145900', 'fu'], ['20140604145900', 'fu'], ['20140605145900', 'fu'], ['20140606145900', 'fu'], ['20140609145900', 'fu'], ['20140610145900', 'fu'], ['20140611145900', 'fu'], ['20140612145900', 'fu'], ['20140613145900', 'fu'], ['20140616145900', 'fu'], ['20140617145900', 'fu'], ['20140618145900', 'fu'], ['20140619145900', 'fu'], ['20140620145900', 'fu'], ['20140623145900', 'fu'], ['20140624145900', 'fu'], ['20140625145900', 'fu'], ['20140626145900', 'fu'], ['20140627145900', 'fu'], ['20140630145900', 'fu'], ['20140701145900', 'fu'], ['20140702145900', 'fu'], ['20140703145900', 'fu'], ['20140704145900', 'fu'], ['20140707145900', 'fu'], ['20140708145900', 'fu'], ['20140709145900', 'fu'], ['20140710145900', 'fu'], ['20140711145900', 'fu'], ['20140714145900', 'fu'], ['20140715145900', 'fu'], ['20140716145900', 'fu'], ['20140717145900', 'fu'], ['20140718145900', 'fu'], ['20140721145900', 'fu'], ['20140722145900', 'fu'], ['20140723145900', 'fu'], ['20140724145900', 'fu'], ['20140725145900', 'fu'], ['20140728145900', 'fu'], ['20140729145900', 'fu'], ['20140730145900', 'fu'], ['20140731145900', 'fu'], ['20140801145900', 'fu'], ['20140804145900', 'fu'], ['20140805145900', 'fu'], ['20140806145900', 'fu'], ['20140807145900', 'fu'], ['20140808145900', 'fu'], ['20140811145900', 'fu'], ['20140812145900', 'fu'], ['20140813145900', 'fu'], ['20140814145900', 'fu'], ['20140815145900', 'fu'], ['20140818145900', 'fu'], ['20140819145900', 'fu'], ['20140820145900', 'fu'], ['20140821145900', 'fu'], ['20140822145900', 'fu'], ['20140825145900', 'fu'], ['20140826145900', 'fu'], ['20140827145900', 'fu'], ['20140828145900', 'fu'], ['20140829145900', 'fu'], ['20140901145900', 'fu'], ['20140902145900', 'fu'], ['20140903145900', 'fu'], ['20140904145900', 'fu'], ['20140905145900', 'fu'], ['20140909145900', 'fu'], ['20140910145900', 'bu'], ['20140910145900', 'fu'], ['20140911145900', 'fu'], ['20140912145900', 'bu'], ['20140912145900', 'fu'], ['20140915145900', 'bu'], ['20140915145900', 'fu'], ['20140916145900', 'bu'], ['20140916145900', 'fu'], ['20140917145900', 'fu'], ['20140918145900', 'fu'], ['20140919145900', 'fu'], ['20140922145900', 'fu'], ['20140923145900', 'bu'], ['20140923145900', 'fu'], ['20140924145900', 'fu'], ['20140925145900', 'fu'], ['20140926145900', 'fu'], ['20140929145900', 'fu'], ['20140930145900', 'fu'], ['20141008145900', 'fu'], ['20141009145900', 'fu'], ['20141010145900', 'fu'], ['20141013145900', 'fu'], ['20141014145900', 'fu'], ['20141015145900', 'fu'], ['20141016145900', 'bu'], ['20141016145900', 'fu'], ['20141017145900', 'fu'], ['20141020145900', 'fu'], ['20141021145900', 'fu'], ['20141022145900', 'bu'], ['20141022145900', 'fu'], ['20141023145900', 'fu'], ['20141024145900', 'fu'], ['20141027145900', 'bu'], ['20141027145900', 'fu'], ['20141028145900', 'fu'], ['20141029145900', 'bu'], ['20141029145900', 'fu'], ['20141030145900', 'fu'], ['20141031145900', 'bu'], ['20141031145900', 'fu'], ['20141103145900', 'fu'], ['20141104145900', 'bu'], ['20141104145900', 'fu'], ['20141105145900', 'fu'], ['20141106145900', 'fu'], ['20141107145900', 'bu'], ['20141107145900', 'fu'], ['20141110145900', 'bu'], ['20141110145900', 'fu'], ['20141111145900', 'fu'], ['20141112145900', 'bu'], ['20141112145900', 'fu'], ['20141113145900', 'fu'], ['20141114145900', 'fu'], ['20141117145900', 'fu'], ['20141118145900', 'fu'], ['20141119145900', 'fu'], ['20141120145900', 'fu'], ['20141121145900', 'fu'], ['20141124145900', 'fu'], ['20141125145900', 'bu'], ['20141125145900', 'fu'], ['20141126145900', 'fu'], ['20141127145900', 'bu'], ['20141127145900', 'fu'], ['20141128145900', 'fu'], ['20141201145900', 'bu'], ['20141201145900', 'fu'], ['20141202145900', 'bu'], ['20141202145900', 'fu'], ['20141203145900', 'bu'], ['20141203145900', 'fu'], ['20141204145900', 'bu'], ['20141204145900', 'fu'], ['20141205145900', 'bu'], ['20141205145900', 'fu'], ['20141208145900', 'fu'], ['20141209145900', 'bu'], ['20141209145900', 'fu'], ['20141210145900', 'bu'], ['20141210145900', 'fu'], ['20141211145900', 'fu'], ['20141212145900', 'bu'], ['20141212145900', 'fu'], ['20141215145900', 'bu'], ['20141215145900', 'fu'], ['20141216145900', 'bu'], ['20141216145900', 'fu'], ['20141217145900', 'bu'], ['20141217145900', 'fu'], ['20141218145900', 'bu'], ['20141218145900', 'fu'], ['20141219145900', 'bu'], ['20141219145900', 'fu'], ['20141222145900', 'bu'], ['20141222145900', 'fu'], ['20141223145900', 'bu'], ['20141223145900', 'fu'], ['20141224145900', 'bu'], ['20141224145900', 'fu'], ['20141225145900', 'bu'], ['20141225145900', 'fu'], ['20141226145900', 'bu'], ['20141226145900', 'fu'], ['20141229145900', 'bu'], ['20141229145900', 'fu'], ['20141230145900', 'bu'], ['20141230145900', 'fu'], ['20141231145900', 'bu'], ['20141231145900', 'fu'], ['20150105145900', 'fu'], ['20150106145900', 'bu'], ['20150106145900', 'fu'], ['20150107145900', 'bu'], ['20150107145900', 'fu'], ['20150108145900', 'fu'], ['20150109145900', 'fu'], ['20150112145900', 'fu'], ['20150113145900', 'fu'], ['20150114145900', 'fu'], ['20150115145900', 'fu'], ['20150116145900', 'fu'], ['20150119145900', 'fu'], ['20150120145900', 'fu'], ['20150121145900', 'fu'], ['20150122145900', 'fu'], ['20150123145900', 'fu'], ['20150126145900', 'fu'], ['20150127145900', 'fu'], ['20150128145900', 'fu'], ['20150129145900', 'fu'], ['20150130145900', 'fu'], ['20150202145900', 'fu'], ['20150203145900', 'fu'], ['20150204145900', 'fu'], ['20150205145900', 'fu'], ['20150206145900', 'fu'], ['20150209145900', 'fu'], ['20150210145900', 'fu'], ['20150211145900', 'fu'], ['20150212145900', 'fu'], ['20150213145900', 'fu'], ['20150216145900', 'fu'], ['20150217145900', 'fu'], ['20150225145900', 'fu'], ['20150226145900', 'fu'], ['20150227145900', 'fu'], ['20150302145900', 'fu'], ['20150303145900', 'fu'], ['20150304145900', 'fu'], ['20150305145900', 'fu'], ['20150306145900', 'fu'], ['20150309145900', 'fu'], ['20150310145900', 'fu'], ['20150311145900', 'fu'], ['20150312145900', 'fu'], ['20150313145900', 'fu'], ['20150316145900', 'fu'], ['20150317145900', 'fu'], ['20150318145900', 'fu'], ['20150319145900', 'fu'], ['20150320145900', 'fu'], ['20150323145900', 'fu'], ['20150324145900', 'fu'], ['20150325145900', 'fu'], ['20150326145900', 'fu'], ['20150327145900', 'fu'], ['20150330145900', 'fu'], ['20150331145900', 'fu'], ['20150401145900', 'fu'], ['20150402145900', 'fu'], ['20150403145900', 'fu'], ['20150407145900', 'fu'], ['20150408145900', 'fu'], ['20150409145900', 'fu'], ['20150410145900', 'fu'], ['20150413145900', 'fu'], ['20150414145900', 'fu'], ['20150415145900', 'fu'], ['20150416145900', 'fu'], ['20150417145900', 'ag'], ['20150417145900', 'au'], ['20150417145900', 'bu'], ['20150417145900', 'cu'], ['20150417145900', 'fu'], ['20150417145900', 'ni'], ['20150417145900', 'pb'], ['20150417145900', 'rb'], ['20150417145900', 'ru'], ['20150417145900', 'zn'], ['20150420145900', 'fu'], ['20150421145900', 'fu'], ['20150422145900', 'fu'], ['20150423145900', 'fu'], ['20150424145900', 'fu'], ['20150427145900', 'fu'], ['20150428145900', 'fu'], ['20150429145900', 'fu'], ['20150430145900', 'fu'], ['20150504145900', 'fu'], ['20150505145900', 'fu'], ['20150506145900', 'fu'], ['20150507145900', 'fu'], ['20150508145900', 'fu'], ['20150511145900', 'fu'], ['20150512145900', 'fu'], ['20150513145900', 'fu'], ['20150514145900', 'fu'], ['20150515145900', 'fu'], ['20150518145900', 'fu'], ['20150519145900', 'fu'], ['20150520145900', 'fu'], ['20150521145900', 'fu'], ['20150522145900', 'fu'], ['20150525145900', 'fu'], ['20150526145900', 'fu'], ['20150527145900', 'fu'], ['20150528145900', 'fu'], ['20150529145900', 'fu'], ['20150601145900', 'fu'], ['20150602145900', 'fu'], ['20150603145900', 'fu'], ['20150604145900', 'fu'], ['20150605145900', 'fu'], ['20150608145900', 'fu'], ['20150608145900', 'm'], ['20150608145900', 'p'], ['20150608145900', 'pp'], ['20150608145900', 'v'], ['20150608145900', 'y'], ['20150609145900', 'fu'], ['20150610145900', 'fu'], ['20150611145900', 'fu'], ['20150612145900', 'fu'], ['20150615145900', 'fu'], ['20150616145900', 'fu'], ['20150617145900', 'fu'], ['20150618145900', 'fu'], ['20150619145900', 'fu'], ['20150623145900', 'fu'], ['20150624145900', 'fu'], ['20150625145900', 'fu'], ['20150626145900', 'fu'], ['20150629145900', 'fu'], ['20150630145900', 'a'], ['20150630145900', 'c'], ['20150630145900', 'cs'], ['20150630145900', 'fu'], ['20150630145900', 'i'], ['20150630145900', 'l'], ['20150630145900', 'm'], ['20150630145900', 'p'], ['20150630145900', 'pp'], ['20150630145900', 'v'], ['20150630145900', 'y'], ['20150701145900', 'fu'], ['20150702145900', 'fu'], ['20150703145900', 'fu'], ['20150706145900', 'fu'], ['20150707145900', 'fu'], ['20150708145900', 'fu'], ['20150709145900', 'fu'], ['20150710145900', 'fu'], ['20150713145900', 'fu'], ['20150714145900', 'fu'], ['20150715145900', 'fu'], ['20150716145900', 'fu'], ['20150717145900', 'fu'], ['20150720145900', 'fu'], ['20150721145900', 'fu'], ['20150722145900', 'fu'], ['20150723145900', 'fu'], ['20150724145900', 'fu'], ['20150727145900', 'fu'], ['20150728145900', 'fu'], ['20150729145900', 'fu'], ['20150730145900', 'fu'], ['20150731145900', 'fu'], ['20150803145900', 'fu'], ['20150804145900', 'fu'], ['20150805145900', 'fu'], ['20150806145900', 'fu'], ['20150807145900', 'fu'], ['20150810145900', 'fu'], ['20150811145900', 'fu'], ['20150812145900', 'fu'], ['20150813145900', 'fu'], ['20150814145900', 'fu'], ['20150817145900', 'fu'], ['20150818145900', 'fu'], ['20150819145900', 'fu'], ['20150820145900', 'fu'], ['20150821145900', 'fu'], ['20150824145900', 'fu'], ['20150825145900', 'fu'], ['20150826145900', 'fu'], ['20150827145900', 'fu'], ['20150828145900', 'fu'], ['20150831145900', 'fu'], ['20150901145900', 'fu'], ['20150902145900', 'fu'], ['20150907145900', 'fu'], ['20150908145900', 'fu'], ['20150909145900', 'fu'], ['20150910145900', 'fu'], ['20150911145900', 'fu'], ['20150914145900', 'fu'], ['20150915145900', 'fu'], ['20150916145900', 'fu'], ['20150917145900', 'fu'], ['20150918145900', 'fu'], ['20150921145900', 'fu'], ['20150922145900', 'fu'], ['20150923145900', 'fu'], ['20150924145900', 'fu'], ['20150925145900', 'fu'], ['20150928145900', 'fu'], ['20150929145900', 'fu'], ['20150930145900', 'fu'], ['20151008145900', 'fu'], ['20151009145900', 'fu'], ['20151012145900', 'fu'], ['20151013145900', 'fu'], ['20151014145900', 'fu'], ['20151015145900', 'fu'], ['20151016145900', 'fu'], ['20151019145900', 'fu'], ['20151020145900', 'fu'], ['20151021145900', 'fu'], ['20151022145900', 'fu'], ['20151023145900', 'fu'], ['20151026145900', 'fu'], ['20151027145900', 'fu'], ['20151028145900', 'fu'], ['20151029145900', 'fu'], ['20151030145900', 'fu'], ['20151102145900', 'fu'], ['20151103145900', 'fu'], ['20151104145900', 'fu'], ['20151105145900', 'fu'], ['20151106145900', 'fu'], ['20151109145900', 'fu'], ['20151110145900', 'fu'], ['20151111145900', 'fu'], ['20151112145900', 'fu'], ['20151113145900', 'fu'], ['20151116145900', 'fu'], ['20151117145900', 'fu'], ['20151118145900', 'fu'], ['20151119145900', 'fu'], ['20151120145900', 'fu'], ['20151123145900', 'fu'], ['20151124145900', 'fu'], ['20151125145900', 'fu'], ['20151126145900', 'fu'], ['20151127145900', 'fu'], ['20151130145900', 'fu'], ['20151201145900', 'fu'], ['20151202145900', 'fu'], ['20151203145900', 'fu'], ['20151204145900', 'fu'], ['20151207145900', 'fu'], ['20151208145900', 'fu'], ['20151209145900', 'fu'], ['20151210145900', 'fu'], ['20151211145900', 'fu'], ['20151214145900', 'fu'], ['20151215145900', 'fu'], ['20151216145900', 'fu'], ['20151217145900', 'fu'], ['20151218145900', 'fu'], ['20151221145900', 'fu'], ['20151222145900', 'fu'], ['20151223145900', 'fu'], ['20151224145900', 'fu'], ['20151225145900', 'fu'], ['20151228145900', 'fu'], ['20151229145900', 'fu'], ['20151230145900', 'fu'], ['20151231145900', 'fu'], ['20160104145900', 'fu'], ['20160105145900', 'fu'], ['20160106145900', 'fu'], ['20160107145900', 'fu'], ['20160108145900', 'fu'], ['20160111145900', 'fu'], ['20160112145900', 'fu'], ['20160113145900', 'fu'], ['20160114145900', 'fu'], ['20160115145900', 'fu'], ['20160118145900', 'fu'], ['20160119145900', 'fu'], ['20160120145900', 'fu'], ['20160121145900', 'fu'], ['20160122145900', 'fu'], ['20160125145900', 'fu'], ['20160126145900', 'fu'], ['20160127145900', 'fu'], ['20160128145900', 'fu'], ['20160129145900', 'fu'], ['20160201145900', 'fu'], ['20160202145900', 'fu'], ['20160203145900', 'fu'], ['20160204145900', 'fu'], ['20160205145900', 'fu'], ['20160215145900', 'fu'], ['20160216145900', 'fu'], ['20160217145900', 'fu'], ['20160218145900', 'fu'], ['20160219145900', 'fu'], ['20160222145900', 'fu'], ['20160223145900', 'fu'], ['20160224145900', 'fu'], ['20160225145900', 'fu'], ['20160226145900', 'fu'], ['20160229145900', 'fu'], ['20160301145900', 'fu'], ['20160302145900', 'fu'], ['20160303145900', 'fu'], ['20160304145900', 'fu'], ['20160307145900', 'fu'], ['20160308145900', 'fu'], ['20160309145900', 'fu'], ['20160310145900', 'fu'], ['20160311145900', 'fu'], ['20160314145900', 'fu'], ['20160315145900', 'fu'], ['20160316145900', 'fu'], ['20160317145900', 'fu'], ['20160318145900', 'fu'], ['20160321145900', 'fu'], ['20160322145900', 'fu'], ['20160323145900', 'fu'], ['20160324145900', 'fu'], ['20160325145900', 'fu'], ['20160328145900', 'fu'], ['20160329145900', 'fu'], ['20160330145900', 'fu'], ['20160331145900', 'fu'], ['20160401145900', 'fu'], ['20160405145900', 'fu'], ['20160406145900', 'fu'], ['20160407145900', 'fu'], ['20160408145900', 'fu'], ['20160411145900', 'fu'], ['20160412145900', 'fu'], ['20160413145900', 'fu'], ['20160414145900', 'fu'], ['20160415145900', 'fu'], ['20160418145900', 'fu'], ['20160419145900', 'fu'], ['20160420145900', 'fu'], ['20160421145900', 'fu'], ['20160422145900', 'fu'], ['20160425145900', 'fu'], ['20160426145900', 'fu'], ['20160427145900', 'fu'], ['20160428145900', 'fu'], ['20160429145900', 'fu'], ['20160503145900', 'fu'], ['20160504145900', 'fu'], ['20160505145900', 'fu'], ['20160506145900', 'fu'], ['20160509145900', 'fu'], ['20160510145900', 'fu'], ['20160511145900', 'fu'], ['20160512145900', 'fu'], ['20160513145900', 'fu'], ['20160516145900', 'fu'], ['20160517145900', 'fu'], ['20160518145900', 'fu'], ['20160519145900', 'fu'], ['20160520145900', 'fu'], ['20160523145900', 'fu'], ['20160524145900', 'fu'], ['20160525145900', 'fu'], ['20160526145900', 'fu'], ['20160527145900', 'fu'], ['20160530145900', 'fu'], ['20160531145900', 'fu'], ['20160601145900', 'fu'], ['20160602145900', 'fu'], ['20160603145900', 'fu'], ['20160606145900', 'fu'], ['20160607145900', 'fu'], ['20160608145900', 'fu'], ['20160613145900', 'fu'], ['20160614145900', 'fu'], ['20160615145900', 'fu'], ['20160616145900', 'fu'], ['20160617145900', 'fu'], ['20160620145900', 'fu'], ['20160621145900', 'fu'], ['20160622145900', 'fu'], ['20160623145900', 'fu'], ['20160624145900', 'fu'], ['20160627145900', 'fu'], ['20160628145900', 'fu'], ['20160629145900', 'fu'], ['20160630145900', 'fu'], ['20160701145900', 'fu'], ['20160704145900', 'fu'], ['20160705145900', 'fu'], ['20160706145900', 'fu'], ['20160707145900', 'fu'], ['20160708145900', 'fu'], ['20160711145900', 'fu'], ['20160712145900', 'fu'], ['20160713145900', 'fu'], ['20160714145900', 'fu'], ['20160715145900', 'fu'], ['20160718145900', 'fu'], ['20160719145900', 'fu'], ['20160720145900', 'fu'], ['20160721145900', 'fu'], ['20160722145900', 'fu'], ['20160725145900', 'fu'], ['20160726145900', 'fu'], ['20160727145900', 'fu'], ['20160728145900', 'fu'], ['20160729145900', 'fu'], ['20160801145900', 'fu'], ['20160802145900', 'fu'], ['20160803145900', 'fu'], ['20160804145900', 'fu'], ['20160805145900', 'fu'], ['20160808145900', 'fu'], ['20160809145900', 'fu'], ['20160810145900', 'fu'], ['20160811145900', 'fu'], ['20160812145900', 'fu'], ['20160815145900', 'fu'], ['20160816145900', 'fu'], ['20160817145900', 'fu'], ['20160818145900', 'fu'], ['20160819145900', 'fu'], ['20160822145900', 'fu'], ['20160823145900', 'fu'], ['20160824145900', 'fu'], ['20160825145900', 'fu'], ['20160826145900', 'fu'], ['20160829145900', 'fu'], ['20160830145900', 'fu'], ['20160831145900', 'fu'], ['20160901145900', 'fu'], ['20160902145900', 'fu'], ['20160905145900', 'fu'], ['20160906145900', 'fu'], ['20160907145900', 'fu'], ['20160908145900', 'fu'], ['20160909145900', 'fu'], ['20160912145900', 'fu'], ['20160913145900', 'fu'], ['20160914145900', 'fu'], ['20160919145900', 'fu'], ['20160920145900', 'fu'], ['20160921145900', 'fu'], ['20160922145900', 'fu'], ['20160923145900', 'fu'], ['20160926145900', 'fu'], ['20160927145900', 'fu'], ['20160928145900', 'fu'], ['20160929145900', 'fu'], ['20160930145900', 'fu'], ['20161010145900', 'fu'], ['20161011145900', 'fu'], ['20161012145900', 'fu'], ['20161013145900', 'fu'], ['20161014145900', 'fu'], ['20161017145900', 'fu'], ['20161018145900', 'fu'], ['20161019145900', 'fu'], ['20161020145900', 'fu'], ['20161021145900', 'fu'], ['20161024145900', 'fu'], ['20161025145900', 'fu'], ['20161026145900', 'fu'], ['20161027145900', 'fu'], ['20161028145900', 'fu'], ['20161031145900', 'fu'], ['20161101145900', 'fu'], ['20161102145900', 'fu'], ['20161103145900', 'fu'], ['20161104145900', 'fu'], ['20161107145900', 'fu'], ['20161108145900', 'fu'], ['20161109145900', 'fu'], ['20161110145900', 'fu'], ['20161111145900', 'fu'], ['20161114145900', 'fu'], ['20161115145900', 'fu'], ['20161116145900', 'fu'], ['20161117145900', 'fu'], ['20161118145900', 'fu'], ['20161121145900', 'fu'], ['20161122145900', 'fu'], ['20161123145900', 'fu'], ['20161124145900', 'fu'], ['20161125145900', 'fu'], ['20161128145900', 'fu'], ['20161129145900', 'fu'], ['20161130145900', 'fu'], ['20161201145900', 'fu'], ['20161202145900', 'fu'], ['20161205145900', 'fu'], ['20161206145900', 'fu'], ['20161207145900', 'fu'], ['20161208145900', 'fu'], ['20161209145900', 'fu'], ['20161212145900', 'fu'], ['20161213145900', 'fu'], ['20161214145900', 'fu'], ['20161215145900', 'fu'], ['20161216145900', 'fu'], ['20161219145900', 'fu'], ['20161220145900', 'fu'], ['20161221145900', 'fu'], ['20161222145900', 'fu'], ['20161223145900', 'fu'], ['20161226145900', 'fu'], ['20161227145900', 'fu'], ['20161228145900', 'fu'], ['20161229145900', 'fu'], ['20161230145900', 'fu'], ['20170103145900', 'fu'], ['20170104145900', 'fu'], ['20170105145900', 'fu'], ['20170106145900', 'fu'], ['20170109145900', 'fu'], ['20170110145900', 'fu'], ['20170111145900', 'fu'], ['20170112145900', 'fu'], ['20170113145900', 'fu'], ['20170116145900', 'fu'], ['20170117145900', 'fu'], ['20170118145900', 'fu'], ['20170119145900', 'fu'], ['20170120145900', 'fu'], ['20170123145900', 'fu'], ['20170124145900', 'fu'], ['20170125145900', 'fu'], ['20170126145900', 'fu'], ['20170203145900', 'fu'], ['20170206145900', 'fu'], ['20170207145900', 'fu'], ['20170208145900', 'fu'], ['20170209145900', 'fu'], ['20170210145900', 'fu'], ['20170213145900', 'fu'], ['20170214145900', 'fu'], ['20170215145900', 'fu'], ['20170216145900', 'fu'], ['20170217145900', 'fu'], ['20170220145900', 'fu'], ['20170221145900', 'fu'], ['20170222145900', 'fu'], ['20170223145900', 'fu'], ['20170224145900', 'fu'], ['20170227145900', 'fu'], ['20170228145900', 'fu'], ['20170301145900', 'fu'], ['20170302145900', 'fu'], ['20170303145900', 'fu'], ['20170306145900', 'fu'], ['20170307145900', 'fu'], ['20170308145900', 'fu'], ['20170309145900', 'fu'], ['20170310145900', 'fu'], ['20170313145900', 'fu'], ['20170314145900', 'fu'], ['20170315145900', 'fu'], ['20170316145900', 'fu'], ['20170317145900', 'fu'], ['20170320145900', 'fu'], ['20170321145900', 'fu'], ['20170322145900', 'fu'], ['20170323145900', 'fu'], ['20170324145900', 'fu'], ['20170327145900', 'fu'], ['20170328145900', 'fu'], ['20170329145900', 'fu'], ['20170330145900', 'fu'], ['20170331145900', 'fu'], ['20170405145900', 'fu'], ['20170406145900', 'fu'], ['20170407145900', 'fu'], ['20170410145900', 'fu'], ['20170411145900', 'fu'], ['20170412145900', 'fu'], ['20170413145900', 'fu'], ['20170414145900', 'fu'], ['20170417145900', 'fu'], ['20170418145900', 'fu'], ['20170419145900', 'fu'], ['20170420145900', 'fu'], ['20170421145900', 'fu'], ['20170424145900', 'fu'], ['20170425145900', 'fu'], ['20170426145900', 'fu'], ['20170427145900', 'fu'], ['20170428145900', 'fu'], ['20170502145900', 'fu'], ['20170503145900', 'fu'], ['20170504145900', 'fu'], ['20170505145900', 'fu'], ['20170508145900', 'fu'], ['20170509145900', 'fu'], ['20170510145900', 'fu'], ['20170511145900', 'fu'], ['20170512145900', 'fu'], ['20170515145900', 'fu'], ['20170516145900', 'fu'], ['20170517145900', 'fu'], ['20170518145900', 'fu'], ['20170519145900', 'fu'], ['20170522145900', 'fu'], ['20170523145900', 'fu'], ['20170524145900', 'fu'], ['20170525145900', 'fu'], ['20170526145900', 'fu'], ['20170531145900', 'fu'], ['20170601145900', 'fu'], ['20170602145900', 'fu'], ['20170605145900', 'fu'], ['20170606145900', 'fu'], ['20170607145900', 'fu'], ['20170608145900', 'fu'], ['20170609145900', 'fu'], ['20170612145900', 'fu'], ['20170613145900', 'fu'], ['20170614145900', 'fu'], ['20170615145900', 'fu'], ['20170616145900', 'fu'], ['20170619145900', 'fu'], ['20170620145900', 'fu'], ['20170621145900', 'fu'], ['20170622145900', 'fu'], ['20170623145900', 'fu'], ['20170626145900', 'fu'], ['20170627145900', 'fu'], ['20170628145900', 'fu'], ['20170629145900', 'fu'], ['20170630145900', 'fu'], ['20170703145900', 'fu'], ['20170704145900', 'fu'], ['20170705145900', 'fu'], ['20170706145900', 'fu'], ['20170707145900', 'fu'], ['20170710145900', 'fu'], ['20170711145900', 'fu'], ['20170712145900', 'fu'], ['20170713145900', 'fu'], ['20170714145900', 'fu'], ['20170717145900', 'fu'], ['20170718145900', 'fu'], ['20170719145900', 'fu'], ['20170720145900', 'fu'], ['20170721145900', 'fu'], ['20170724145900', 'fu'], ['20170725145900', 'fu'], ['20170726145900', 'fu'], ['20170727145900', 'fu'], ['20170728145900', 'fu'], ['20170731145900', 'fu'], ['20170801145900', 'fu'], ['20170802145900', 'fu'], ['20170803145900', 'fu'], ['20170804145900', 'fu'], ['20170807145900', 'fu'], ['20170808145900', 'fu'], ['20170809145900', 'fu'], ['20170810145900', 'fu'], ['20170811145900', 'fu'], ['20170814145900', 'fu'], ['20170815145900', 'fu'], ['20170816145900', 'fu'], ['20170817145900', 'fu'], ['20170818145900', 'fu'], ['20170821145900', 'fu'], ['20170822145900', 'fu'], ['20170823145900', 'fu'], ['20170824145900', 'fu'], ['20170825145900', 'fu'], ['20170828145900', 'fu'], ['20170829145900', 'fu'], ['20170830145900', 'fu'], ['20170831145900', 'fu'], ['20170901145900', 'fu'], ['20170904145900', 'fu'], ['20170905145900', 'fu'], ['20170906145900', 'fu'], ['20170907145900', 'fu'], ['20170908145900', 'fu'], ['20170911145900', 'fu'], ['20170912145900', 'fu'], ['20170913145900', 'fu'], ['20170914145900', 'fu'], ['20170915145900', 'fu'], ['20170918145900', 'fu'], ['20170919145900', 'fu'], ['20170920145900', 'fu'], ['20170921145900', 'fu'], ['20170922145900', 'fu'], ['20170925145900', 'fu'], ['20170926145900', 'fu'], ['20170927145900', 'fu'], ['20170928145900', 'fu'], ['20170929145900', 'fu'], ['20171009145900', 'fu'], ['20171010145900', 'fu'], ['20171011145900', 'fu'], ['20171012145900', 'fu'], ['20171013145900', 'fu'], ['20171016145900', 'fu'], ['20171017145900', 'fu'], ['20171018145900', 'fu'], ['20171019145900', 'fu'], ['20171020145900', 'fu'], ['20171023145900', 'fu'], ['20171024145900', 'fu'], ['20171025145900', 'fu'], ['20171026145900', 'fu'], ['20171027145900', 'fu'], ['20171030145900', 'fu'], ['20171031145900', 'fu'], ['20171101145900', 'fu'], ['20171102145900', 'fu'], ['20171103145900', 'fu'], ['20171106145900', 'fu'], ['20171107145900', 'fu'], ['20171108145900', 'fu'], ['20171109145900', 'fu'], ['20171110145900', 'fu'], ['20171113145900', 'fu'], ['20171114145900', 'fu'], ['20171115145900', 'fu'], ['20171116145900', 'fu'], ['20171117145900', 'fu'], ['20171120145900', 'fu'], ['20171121145900', 'fu'], ['20171122145900', 'fu'], ['20171123145900', 'fu'], ['20171124145900', 'fu'], ['20171127145900', 'fu'], ['20171128145900', 'fu'], ['20171129145900', 'fu'], ['20171130145900', 'fu'], ['20171201145900', 'fu'], ['20171204145900', 'fu'], ['20171205145900', 'fu'], ['20171206145900', 'fu'], ['20171207145900', 'fu'], ['20171208145900', 'fu'], ['20171211145900', 'fu'], ['20171212145900', 'fu'], ['20171213145900', 'fu'], ['20171214145900', 'fu'], ['20171215145900', 'fu'], ['20171218145900', 'fu'], ['20171219145900', 'fu'], ['20171220145900', 'fu'], ['20171221145900', 'fu'], ['20171222145900', 'fu'], ['20171225145900', 'fu'], ['20171226145900', 'fu'], ['20171227145900', 'fu'], ['20171228145900', 'fu'], ['20171229145900', 'fu'], ['20180102145900', 'fu'], ['20180103145900', 'fu'], ['20180104145900', 'fu'], ['20180105145900', 'fu'], ['20180108145900', 'fu'], ['20180109145900', 'fu'], ['20180110145900', 'fu'], ['20180111145900', 'fu'], ['20180112145900', 'fu'], ['20180115145900', 'fu'], ['20180116145900', 'fu'], ['20180117145900', 'fu'], ['20180118145900', 'fu'], ['20180119145900', 'fu'], ['20180122145900', 'fu'], ['20180123145900', 'fu'], ['20180124145900', 'fu'], ['20180125145900', 'fu'], ['20180126145900', 'fu'], ['20180129145900', 'fu'], ['20180130145900', 'fu'], ['20180131145900', 'fu'], ['20180201145900', 'fu'], ['20180202145900', 'fu'], ['20180205145900', 'fu'], ['20180206145900', 'fu'], ['20180207145900', 'fu'], ['20180208145900', 'fu'], ['20180209145900', 'fu'], ['20180212145900', 'fu'], ['20180213145900', 'fu'], ['20180214145900', 'fu'], ['20180222145900', 'fu'], ['20180223145900', 'fu'], ['20180226145900', 'fu'], ['20180227145900', 'fu'], ['20180228145900', 'fu'], ['20180301145900', 'fu'], ['20180302145900', 'fu'], ['20180305145900', 'fu'], ['20180306145900', 'fu'], ['20180307145900', 'fu'], ['20180308145900', 'fu'], ['20180309145900', 'fu'], ['20180312145900', 'fu'], ['20180313145900', 'fu'], ['20180314145900', 'fu'], ['20180315145900', 'fu'], ['20180316145900', 'fu'], ['20180319145900', 'fu'], ['20180320145900', 'fu'], ['20180321145900', 'fu'], ['20180322145900', 'fu'], ['20180323145900', 'fu'], ['20180326145900', 'fu'], ['20180327145900', 'fu'], ['20180328145900', 'fu'], ['20180329145900', 'fu'], ['20180330145900', 'fu'], ['20180402145900', 'fu'], ['20180403145900', 'fu'], ['20180404145900', 'fu'], ['20180409145900', 'fu'], ['20180410145900', 'fu'], ['20180411145900', 'fu'], ['20180412145900', 'fu'], ['20180413145900', 'fu'], ['20180416145900', 'fu'], ['20180417145900', 'fu'], ['20180418145900', 'fu'], ['20180419145900', 'fu'], ['20180420145900', 'fu'], ['20180423145900', 'fu'], ['20180424145900', 'fu'], ['20180425145900', 'fu'], ['20180426145900', 'fu'], ['20180427145900', 'fu'], ['20180502145900', 'fu'], ['20180503145900', 'fu'], ['20180504145900', 'fu'], ['20180507145900', 'fu'], ['20180508145900', 'fu'], ['20180509145900', 'fu'], ['20180510145900', 'fu'], ['20180511145900', 'fu'], ['20180514145900', 'fu'], ['20180515145900', 'fu'], ['20180516145900', 'fu'], ['20180517145900', 'fu'], ['20180518145900', 'fu'], ['20180521145900', 'fu'], ['20180522145900', 'fu'], ['20180523145900', 'fu'], ['20180524145900', 'fu'], ['20180525145900', 'fu'], ['20180528145900', 'fu'], ['20180529145900', 'fu'], ['20180530145900', 'fu'], ['20180531145900', 'fu'], ['20180601145900', 'fu'], ['20180604145900', 'fu'], ['20180605145900', 'fu'], ['20180606145900', 'fu'], ['20180607145900', 'fu'], ['20180608145900', 'fu'], ['20180611145900', 'fu'], ['20180612145900', 'fu'], ['20180613145900', 'fu'], ['20180614145900', 'fu'], ['20180615145900', 'fu'], ['20180619145900', 'fu'], ['20180620145900', 'fu'], ['20180621145900', 'fu'], ['20180622145900', 'fu'], ['20180625145900', 'fu'], ['20180626145900', 'fu'], ['20180627145900', 'fu'], ['20180628145900', 'fu'], ['20180629145900', 'fu'], ['20180702145900', 'fu'], ['20180703145900', 'fu'], ['20180704145900', 'fu'], ['20180705145900', 'fu'], ['20180706145900', 'fu'], ['20180709145900', 'fu'], ['20180710145900', 'fu'], ['20180711145900', 'fu'], ['20180712145900', 'fu'], ['20180713145900', 'fu'], ['20180716145900', 'fu'], ['20180717145900', 'fu'], ['20220310145900', 'ni']]\n"
     ]
    }
   ],
   "source": [
    "#若时点A的品种B目标持仓为空，发生的交易则与品种B的收盘价数据无关\n",
    "#因此仅需关注目标持仓非空&clz为空的缺失值情况，并以时点+品种的列表形式输出\n",
    "nmissing = []\n",
    "for i in tradetime:\n",
    "    for x in products:\n",
    "        if (not targetdf.loc[i].isnull()[x]) and tradepricedf.loc[i].isnull()[x]: \n",
    "            nmissing.append([i,x])\n",
    "print(nmissing) #多种品种出现缺失值\n",
    "\n",
    "#其中fu品种出现20110105-20180717的1826个连续缺失，难以补齐\n",
    "#for j in nmissing:\n",
    "    #if j[1] == 'fu':\n",
    "        #count += 1\n",
    "    #print(j[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[]\n"
     ]
    }
   ],
   "source": [
    "#fu品种的无价格情况是连续的，将缺失值对应时点的目标持仓赋值为空\n",
    "import numpy as np\n",
    "for miss in nmissing:\n",
    "    if miss[1] == \"fu\":\n",
    "        targetdf.loc[miss[0],'fu'] = np.nan\n",
    "#targetdf\n",
    "\n",
    "#除fu外其他品种的缺失值，将其赋值为上一个交易时点的价格\n",
    "for i,x in nmissing:\n",
    "    if x!= \"fu\":\n",
    "        iindex = tradetime.index(i)     #获取当前时点\n",
    "        xindex = products.index(x)      #获取当前品种\n",
    "        tradepricedf.iloc[iindex,xindex] = tradepricedf.iloc[iindex-1,xindex] #该缺失值赋值为前一交易日的价格\n",
    "#tradepricedf\n",
    "\n",
    "#检验此时是否还有缺失情况，输出结果为空列表\n",
    "nmissing_check = []\n",
    "for i,x in nmissing:\n",
    "    if (not targetdf.loc[i].isnull()[x]) and tradepricedf.loc[i].isnull()[x]:\n",
    "        nmissing_check.append([i,x])\n",
    "print(nmissing_check)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sa</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>4475.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16840.000000</td>\n",
       "      <td>299.950000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2329.000000</td>\n",
       "      <td>28270.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>71290.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7188.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10540.000000</td>\n",
       "      <td>8425.000000</td>\n",
       "      <td>10512.000000</td>\n",
       "      <td>19475.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>4540.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16950.000000</td>\n",
       "      <td>298.910000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2332.000000</td>\n",
       "      <td>29270.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72020.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7180.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10704.000000</td>\n",
       "      <td>8525.000000</td>\n",
       "      <td>10798.000000</td>\n",
       "      <td>19845.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>4438.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16850.000000</td>\n",
       "      <td>297.010000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2306.000000</td>\n",
       "      <td>28215.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>69790.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6874.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10350.000000</td>\n",
       "      <td>8155.000000</td>\n",
       "      <td>10586.000000</td>\n",
       "      <td>19130.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>4445.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16880.000000</td>\n",
       "      <td>299.210000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2307.000000</td>\n",
       "      <td>28405.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>70040.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6960.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10398.000000</td>\n",
       "      <td>8120.000000</td>\n",
       "      <td>10544.000000</td>\n",
       "      <td>19115.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>4459.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16850.000000</td>\n",
       "      <td>299.660000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2306.000000</td>\n",
       "      <td>28810.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>70910.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7005.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10410.000000</td>\n",
       "      <td>8145.000000</td>\n",
       "      <td>10610.000000</td>\n",
       "      <td>19215.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>5270.040828</td>\n",
       "      <td>3287.943479</td>\n",
       "      <td>18332.339637</td>\n",
       "      <td>325.230619</td>\n",
       "      <td>2302.142810</td>\n",
       "      <td>3397.377023</td>\n",
       "      <td>16545.392249</td>\n",
       "      <td>3209.970200</td>\n",
       "      <td>72042.903157</td>\n",
       "      <td>10180.135175</td>\n",
       "      <td>...</td>\n",
       "      <td>1719.836956</td>\n",
       "      <td>462.809897</td>\n",
       "      <td>219352.911836</td>\n",
       "      <td>6455.164244</td>\n",
       "      <td>5450.307265</td>\n",
       "      <td>23892.021037</td>\n",
       "      <td>7166.757835</td>\n",
       "      <td>7988.194697</td>\n",
       "      <td>8898.598859</td>\n",
       "      <td>27990.967301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>5239.288673</td>\n",
       "      <td>3231.562420</td>\n",
       "      <td>18176.781085</td>\n",
       "      <td>324.703850</td>\n",
       "      <td>2290.647090</td>\n",
       "      <td>3391.344749</td>\n",
       "      <td>16503.148694</td>\n",
       "      <td>3209.970200</td>\n",
       "      <td>70499.681776</td>\n",
       "      <td>9972.908508</td>\n",
       "      <td>...</td>\n",
       "      <td>1737.985077</td>\n",
       "      <td>462.873505</td>\n",
       "      <td>200478.778543</td>\n",
       "      <td>6429.090297</td>\n",
       "      <td>5421.553092</td>\n",
       "      <td>23621.974398</td>\n",
       "      <td>6908.592400</td>\n",
       "      <td>7875.199891</td>\n",
       "      <td>8814.536521</td>\n",
       "      <td>27725.595393</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>5250.710902</td>\n",
       "      <td>3227.280315</td>\n",
       "      <td>17974.083578</td>\n",
       "      <td>324.259388</td>\n",
       "      <td>2302.642624</td>\n",
       "      <td>3353.944647</td>\n",
       "      <td>16573.554618</td>\n",
       "      <td>3166.822741</td>\n",
       "      <td>70888.262699</td>\n",
       "      <td>10066.010344</td>\n",
       "      <td>...</td>\n",
       "      <td>1731.330766</td>\n",
       "      <td>458.548178</td>\n",
       "      <td>203034.755171</td>\n",
       "      <td>6414.190899</td>\n",
       "      <td>5418.770430</td>\n",
       "      <td>23977.298922</td>\n",
       "      <td>6906.458801</td>\n",
       "      <td>7904.255699</td>\n",
       "      <td>8817.967637</td>\n",
       "      <td>27419.840804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>5210.293783</td>\n",
       "      <td>3105.240303</td>\n",
       "      <td>17818.525026</td>\n",
       "      <td>321.345696</td>\n",
       "      <td>2223.672028</td>\n",
       "      <td>3262.254074</td>\n",
       "      <td>16249.687366</td>\n",
       "      <td>3100.596410</td>\n",
       "      <td>68434.651727</td>\n",
       "      <td>9850.774916</td>\n",
       "      <td>...</td>\n",
       "      <td>1659.948156</td>\n",
       "      <td>443.027890</td>\n",
       "      <td>192450.004901</td>\n",
       "      <td>6280.096315</td>\n",
       "      <td>5392.798918</td>\n",
       "      <td>23273.756364</td>\n",
       "      <td>6705.900529</td>\n",
       "      <td>7715.931022</td>\n",
       "      <td>8359.913676</td>\n",
       "      <td>26433.349582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>5168.119399</td>\n",
       "      <td>3088.111880</td>\n",
       "      <td>17893.947354</td>\n",
       "      <td>322.958927</td>\n",
       "      <td>2238.666445</td>\n",
       "      <td>3280.350897</td>\n",
       "      <td>16244.993637</td>\n",
       "      <td>3128.692430</td>\n",
       "      <td>67346.625142</td>\n",
       "      <td>10110.058524</td>\n",
       "      <td>...</td>\n",
       "      <td>1640.590160</td>\n",
       "      <td>456.194692</td>\n",
       "      <td>197832.590976</td>\n",
       "      <td>6242.847820</td>\n",
       "      <td>5394.654026</td>\n",
       "      <td>23238.223911</td>\n",
       "      <td>6942.729978</td>\n",
       "      <td>7528.682487</td>\n",
       "      <td>8354.767002</td>\n",
       "      <td>26283.356765</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 37 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                          a           ag            al          au  \\\n",
       "20110105145900  4475.000000          NaN  16840.000000  299.950000   \n",
       "20110106145900  4540.000000          NaN  16950.000000  298.910000   \n",
       "20110107145900  4438.000000          NaN  16850.000000  297.010000   \n",
       "20110110145900  4445.000000          NaN  16880.000000  299.210000   \n",
       "20110111145900  4459.000000          NaN  16850.000000  299.660000   \n",
       "...                     ...          ...           ...         ...   \n",
       "20220628145900  5270.040828  3287.943479  18332.339637  325.230619   \n",
       "20220629145900  5239.288673  3231.562420  18176.781085  324.703850   \n",
       "20220630145900  5250.710902  3227.280315  17974.083578  324.259388   \n",
       "20220701145900  5210.293783  3105.240303  17818.525026  321.345696   \n",
       "20220704145900  5168.119399  3088.111880  17893.947354  322.958927   \n",
       "\n",
       "                         bu            c            cf           cs  \\\n",
       "20110105145900          NaN  2329.000000  28270.000000          NaN   \n",
       "20110106145900          NaN  2332.000000  29270.000000          NaN   \n",
       "20110107145900          NaN  2306.000000  28215.000000          NaN   \n",
       "20110110145900          NaN  2307.000000  28405.000000          NaN   \n",
       "20110111145900          NaN  2306.000000  28810.000000          NaN   \n",
       "...                     ...          ...           ...          ...   \n",
       "20220628145900  2302.142810  3397.377023  16545.392249  3209.970200   \n",
       "20220629145900  2290.647090  3391.344749  16503.148694  3209.970200   \n",
       "20220630145900  2302.642624  3353.944647  16573.554618  3166.822741   \n",
       "20220701145900  2223.672028  3262.254074  16249.687366  3100.596410   \n",
       "20220704145900  2238.666445  3280.350897  16244.993637  3128.692430   \n",
       "\n",
       "                          cu            eb  ...           sa          sc  \\\n",
       "20110105145900  71290.000000           NaN  ...          NaN         NaN   \n",
       "20110106145900  72020.000000           NaN  ...          NaN         NaN   \n",
       "20110107145900  69790.000000           NaN  ...          NaN         NaN   \n",
       "20110110145900  70040.000000           NaN  ...          NaN         NaN   \n",
       "20110111145900  70910.000000           NaN  ...          NaN         NaN   \n",
       "...                      ...           ...  ...          ...         ...   \n",
       "20220628145900  72042.903157  10180.135175  ...  1719.836956  462.809897   \n",
       "20220629145900  70499.681776   9972.908508  ...  1737.985077  462.873505   \n",
       "20220630145900  70888.262699  10066.010344  ...  1731.330766  458.548178   \n",
       "20220701145900  68434.651727   9850.774916  ...  1659.948156  443.027890   \n",
       "20220704145900  67346.625142  10110.058524  ...  1640.590160  456.194692   \n",
       "\n",
       "                           sn           sp           sr            ss  \\\n",
       "20110105145900            NaN          NaN  7188.000000           NaN   \n",
       "20110106145900            NaN          NaN  7180.000000           NaN   \n",
       "20110107145900            NaN          NaN  6874.000000           NaN   \n",
       "20110110145900            NaN          NaN  6960.000000           NaN   \n",
       "20110111145900            NaN          NaN  7005.000000           NaN   \n",
       "...                       ...          ...          ...           ...   \n",
       "20220628145900  219352.911836  6455.164244  5450.307265  23892.021037   \n",
       "20220629145900  200478.778543  6429.090297  5421.553092  23621.974398   \n",
       "20220630145900  203034.755171  6414.190899  5418.770430  23977.298922   \n",
       "20220701145900  192450.004901  6280.096315  5392.798918  23273.756364   \n",
       "20220704145900  197832.590976  6242.847820  5394.654026  23238.223911   \n",
       "\n",
       "                          ta            v             y            zn  \n",
       "20110105145900  10540.000000  8425.000000  10512.000000  19475.000000  \n",
       "20110106145900  10704.000000  8525.000000  10798.000000  19845.000000  \n",
       "20110107145900  10350.000000  8155.000000  10586.000000  19130.000000  \n",
       "20110110145900  10398.000000  8120.000000  10544.000000  19115.000000  \n",
       "20110111145900  10410.000000  8145.000000  10610.000000  19215.000000  \n",
       "...                      ...          ...           ...           ...  \n",
       "20220628145900   7166.757835  7988.194697   8898.598859  27990.967301  \n",
       "20220629145900   6908.592400  7875.199891   8814.536521  27725.595393  \n",
       "20220630145900   6906.458801  7904.255699   8817.967637  27419.840804  \n",
       "20220701145900   6705.900529  7715.931022   8359.913676  26433.349582  \n",
       "20220704145900   6942.729978  7528.682487   8354.767002  26283.356765  \n",
       "\n",
       "[2787 rows x 37 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#关注到SampleTarget和SampleTarget1的交易时点与收盘时点一致，\n",
    "#但SampleTarget2的交易时点与收盘时点却并不相同（eg.20150129230900）。\n",
    "#因此为兼容不同的目标持仓表，还需额外生成交易日的收盘时点，\n",
    "#通过目标持仓表和交易时点价格计算各品种持有份额，根据各品种持有份额和收盘时点价格计算当日收盘市值。\n",
    "\n",
    "closetime = []\n",
    "for time in tradetime:\n",
    "    closetime.append(time[:8]+\"145900\")\n",
    "closepricedf = pricedf.loc[closetime]\n",
    "closepricedf = closepricedf[products]   #仅选择目标持仓表的品种\n",
    "closepricedf.index = list(targetdf.index) \n",
    "\n",
    "\n",
    "#收盘价缺失值处理，与上述缺失值处理相同\n",
    "for i in tradetime:\n",
    "    for x in products:\n",
    "        if (not targetdf.loc[i].isnull()[x]) and closepricedf.loc[i].isnull()[x]: \n",
    "            iindex = tradetime.index(i)     #获取当前时点\n",
    "            xindex = products.index (x)     #获取当前品种\n",
    "            closepricedf.iloc[iindex,xindex] = closepricedf.iloc[iindex-1, xindex] #该缺失值赋值为前一交易日的价格\n",
    "closepricedf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "      <th>totalposition</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>targettime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>-147771.619605</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>188211.926556</td>\n",
       "      <td>4675.528818</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>33939.361097</td>\n",
       "      <td>367294.714956</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>191791.127128</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-52059.370350</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-78784.288752</td>\n",
       "      <td>-243558.934565</td>\n",
       "      <td>-46265.704896</td>\n",
       "      <td>256696.835487</td>\n",
       "      <td>0.968203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>-150470.753867</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>206720.786537</td>\n",
       "      <td>2936.962301</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>27779.771169</td>\n",
       "      <td>457631.239865</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>240529.928927</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-29702.999753</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-60032.437516</td>\n",
       "      <td>-114014.645588</td>\n",
       "      <td>-30447.038129</td>\n",
       "      <td>175266.290243</td>\n",
       "      <td>1.137293</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>-124702.501707</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>132373.430270</td>\n",
       "      <td>96171.666005</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>40763.848331</td>\n",
       "      <td>286555.672505</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>260677.339207</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-6268.152713</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-79883.521519</td>\n",
       "      <td>-187756.501442</td>\n",
       "      <td>26006.960260</td>\n",
       "      <td>98920.240483</td>\n",
       "      <td>1.116347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>-80043.343558</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>74790.175567</td>\n",
       "      <td>23694.144989</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>44799.597521</td>\n",
       "      <td>36559.662631</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>196880.247479</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>32935.541456</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-51472.175158</td>\n",
       "      <td>-174938.981510</td>\n",
       "      <td>39510.251762</td>\n",
       "      <td>169003.864520</td>\n",
       "      <td>0.843978</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>-84085.400902</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>127954.701121</td>\n",
       "      <td>-26211.960777</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>8358.608784</td>\n",
       "      <td>14672.876389</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>79629.250451</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>13982.923854</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-37275.606641</td>\n",
       "      <td>-105490.470765</td>\n",
       "      <td>11306.349980</td>\n",
       "      <td>135740.407725</td>\n",
       "      <td>0.302846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>77169.597465</td>\n",
       "      <td>-278.548730</td>\n",
       "      <td>54511.866699</td>\n",
       "      <td>-1677.507868</td>\n",
       "      <td>-19989.916041</td>\n",
       "      <td>34700.073258</td>\n",
       "      <td>129343.778576</td>\n",
       "      <td>140959.582861</td>\n",
       "      <td>11268.134809</td>\n",
       "      <td>64114.309836</td>\n",
       "      <td>...</td>\n",
       "      <td>36309.197501</td>\n",
       "      <td>-212970.595343</td>\n",
       "      <td>91883.658490</td>\n",
       "      <td>2908.335777</td>\n",
       "      <td>44915.672785</td>\n",
       "      <td>138278.736625</td>\n",
       "      <td>-65655.316959</td>\n",
       "      <td>20833.954965</td>\n",
       "      <td>-10895.941307</td>\n",
       "      <td>0.265659</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>24883.852252</td>\n",
       "      <td>4527.928752</td>\n",
       "      <td>33801.268039</td>\n",
       "      <td>-2549.251789</td>\n",
       "      <td>-65895.663763</td>\n",
       "      <td>-24075.222624</td>\n",
       "      <td>136134.094189</td>\n",
       "      <td>25908.759588</td>\n",
       "      <td>28197.505165</td>\n",
       "      <td>217731.475909</td>\n",
       "      <td>...</td>\n",
       "      <td>73843.014761</td>\n",
       "      <td>-408747.957618</td>\n",
       "      <td>1885.151015</td>\n",
       "      <td>-22577.143987</td>\n",
       "      <td>187623.082822</td>\n",
       "      <td>-181526.591093</td>\n",
       "      <td>32965.590550</td>\n",
       "      <td>-124420.037119</td>\n",
       "      <td>-54524.222796</td>\n",
       "      <td>0.033769</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>-102873.911478</td>\n",
       "      <td>6945.409938</td>\n",
       "      <td>72325.300393</td>\n",
       "      <td>5131.850081</td>\n",
       "      <td>25719.530177</td>\n",
       "      <td>-22103.394805</td>\n",
       "      <td>21874.988824</td>\n",
       "      <td>73083.851572</td>\n",
       "      <td>-40603.948710</td>\n",
       "      <td>265531.496865</td>\n",
       "      <td>...</td>\n",
       "      <td>225615.343157</td>\n",
       "      <td>-316569.198183</td>\n",
       "      <td>-90166.633283</td>\n",
       "      <td>-27060.971012</td>\n",
       "      <td>224714.707555</td>\n",
       "      <td>66492.790990</td>\n",
       "      <td>-57780.319257</td>\n",
       "      <td>-133711.918088</td>\n",
       "      <td>-5287.531938</td>\n",
       "      <td>0.455497</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>-94179.922678</td>\n",
       "      <td>9603.507709</td>\n",
       "      <td>55261.984607</td>\n",
       "      <td>-8021.827359</td>\n",
       "      <td>55088.478846</td>\n",
       "      <td>-54922.312436</td>\n",
       "      <td>137920.914090</td>\n",
       "      <td>155869.445901</td>\n",
       "      <td>-41396.830603</td>\n",
       "      <td>126287.618512</td>\n",
       "      <td>...</td>\n",
       "      <td>177346.164335</td>\n",
       "      <td>-344400.305158</td>\n",
       "      <td>46029.510392</td>\n",
       "      <td>26589.697596</td>\n",
       "      <td>98402.242928</td>\n",
       "      <td>-27899.373475</td>\n",
       "      <td>4457.794484</td>\n",
       "      <td>-114481.492734</td>\n",
       "      <td>29828.982011</td>\n",
       "      <td>0.585500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>-39570.297701</td>\n",
       "      <td>-7580.100849</td>\n",
       "      <td>79102.660535</td>\n",
       "      <td>-5910.865578</td>\n",
       "      <td>19176.908797</td>\n",
       "      <td>14232.245642</td>\n",
       "      <td>199673.269788</td>\n",
       "      <td>180789.262642</td>\n",
       "      <td>-21643.063473</td>\n",
       "      <td>272607.100164</td>\n",
       "      <td>...</td>\n",
       "      <td>125753.543618</td>\n",
       "      <td>-400257.038097</td>\n",
       "      <td>-12051.023072</td>\n",
       "      <td>-6882.031521</td>\n",
       "      <td>125058.299495</td>\n",
       "      <td>131546.742103</td>\n",
       "      <td>-67877.035916</td>\n",
       "      <td>-109800.228568</td>\n",
       "      <td>117040.177171</td>\n",
       "      <td>1.285433</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 38 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            a           ag             al            au  \\\n",
       "targettime                                                                \n",
       "20110105145900 -147771.619605     0.000000  188211.926556   4675.528818   \n",
       "20110106145900 -150470.753867     0.000000  206720.786537   2936.962301   \n",
       "20110107145900 -124702.501707     0.000000  132373.430270  96171.666005   \n",
       "20110110145900  -80043.343558     0.000000   74790.175567  23694.144989   \n",
       "20110111145900  -84085.400902     0.000000  127954.701121 -26211.960777   \n",
       "...                       ...          ...            ...           ...   \n",
       "20220628145900   77169.597465  -278.548730   54511.866699  -1677.507868   \n",
       "20220629145900   24883.852252  4527.928752   33801.268039  -2549.251789   \n",
       "20220630145900 -102873.911478  6945.409938   72325.300393   5131.850081   \n",
       "20220701145900  -94179.922678  9603.507709   55261.984607  -8021.827359   \n",
       "20220704145900  -39570.297701 -7580.100849   79102.660535  -5910.865578   \n",
       "\n",
       "                          bu             c             cf             cs  \\\n",
       "targettime                                                                 \n",
       "20110105145900      0.000000  33939.361097  367294.714956       0.000000   \n",
       "20110106145900      0.000000  27779.771169  457631.239865       0.000000   \n",
       "20110107145900      0.000000  40763.848331  286555.672505       0.000000   \n",
       "20110110145900      0.000000  44799.597521   36559.662631       0.000000   \n",
       "20110111145900      0.000000   8358.608784   14672.876389       0.000000   \n",
       "...                      ...           ...            ...            ...   \n",
       "20220628145900 -19989.916041  34700.073258  129343.778576  140959.582861   \n",
       "20220629145900 -65895.663763 -24075.222624  136134.094189   25908.759588   \n",
       "20220630145900  25719.530177 -22103.394805   21874.988824   73083.851572   \n",
       "20220701145900  55088.478846 -54922.312436  137920.914090  155869.445901   \n",
       "20220704145900  19176.908797  14232.245642  199673.269788  180789.262642   \n",
       "\n",
       "                           cu             eb  ...             sc  \\\n",
       "targettime                                    ...                  \n",
       "20110105145900  191791.127128       0.000000  ...       0.000000   \n",
       "20110106145900  240529.928927       0.000000  ...       0.000000   \n",
       "20110107145900  260677.339207       0.000000  ...       0.000000   \n",
       "20110110145900  196880.247479       0.000000  ...       0.000000   \n",
       "20110111145900   79629.250451       0.000000  ...       0.000000   \n",
       "...                       ...            ...  ...            ...   \n",
       "20220628145900   11268.134809   64114.309836  ...   36309.197501   \n",
       "20220629145900   28197.505165  217731.475909  ...   73843.014761   \n",
       "20220630145900  -40603.948710  265531.496865  ...  225615.343157   \n",
       "20220701145900  -41396.830603  126287.618512  ...  177346.164335   \n",
       "20220704145900  -21643.063473  272607.100164  ...  125753.543618   \n",
       "\n",
       "                           sn            sp            sr             ss  \\\n",
       "targettime                                                                 \n",
       "20110105145900       0.000000      0.000000 -52059.370350       0.000000   \n",
       "20110106145900       0.000000      0.000000 -29702.999753       0.000000   \n",
       "20110107145900       0.000000      0.000000  -6268.152713       0.000000   \n",
       "20110110145900       0.000000      0.000000  32935.541456       0.000000   \n",
       "20110111145900       0.000000      0.000000  13982.923854       0.000000   \n",
       "...                       ...           ...           ...            ...   \n",
       "20220628145900 -212970.595343  91883.658490   2908.335777   44915.672785   \n",
       "20220629145900 -408747.957618   1885.151015 -22577.143987  187623.082822   \n",
       "20220630145900 -316569.198183 -90166.633283 -27060.971012  224714.707555   \n",
       "20220701145900 -344400.305158  46029.510392  26589.697596   98402.242928   \n",
       "20220704145900 -400257.038097 -12051.023072  -6882.031521  125058.299495   \n",
       "\n",
       "                           ta              v              y             zn  \\\n",
       "targettime                                                                   \n",
       "20110105145900  -78784.288752 -243558.934565  -46265.704896  256696.835487   \n",
       "20110106145900  -60032.437516 -114014.645588  -30447.038129  175266.290243   \n",
       "20110107145900  -79883.521519 -187756.501442   26006.960260   98920.240483   \n",
       "20110110145900  -51472.175158 -174938.981510   39510.251762  169003.864520   \n",
       "20110111145900  -37275.606641 -105490.470765   11306.349980  135740.407725   \n",
       "...                       ...            ...            ...            ...   \n",
       "20220628145900  138278.736625  -65655.316959   20833.954965  -10895.941307   \n",
       "20220629145900 -181526.591093   32965.590550 -124420.037119  -54524.222796   \n",
       "20220630145900   66492.790990  -57780.319257 -133711.918088   -5287.531938   \n",
       "20220701145900  -27899.373475    4457.794484 -114481.492734   29828.982011   \n",
       "20220704145900  131546.742103  -67877.035916 -109800.228568  117040.177171   \n",
       "\n",
       "                totalposition  \n",
       "targettime                     \n",
       "20110105145900       0.968203  \n",
       "20110106145900       1.137293  \n",
       "20110107145900       1.116347  \n",
       "20110110145900       0.843978  \n",
       "20110111145900       0.302846  \n",
       "...                       ...  \n",
       "20220628145900       0.265659  \n",
       "20220629145900       0.033769  \n",
       "20220630145900       0.455497  \n",
       "20220701145900       0.585500  \n",
       "20220704145900       1.285433  \n",
       "\n",
       "[2787 rows x 38 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "targetdf = targetdf.fillna(0) #目标持仓表的缺失值赋值为0\n",
    "targetdf[\"totalposition\"] = (targetdf.apply(lambda x:x.sum(), axis=1))/1000000  #最后一列计算各品种的总仓位\n",
    "targetdf "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sa</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>targettime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>-33.021591</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.176480</td>\n",
       "      <td>15.587694</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.572504</td>\n",
       "      <td>12.992385</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.690295</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-7.242539</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-7.474790</td>\n",
       "      <td>-28.909072</td>\n",
       "      <td>-4.401228</td>\n",
       "      <td>13.180839</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>-33.143338</td>\n",
       "      <td>NaN</td>\n",
       "      <td>12.195917</td>\n",
       "      <td>9.825574</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.912423</td>\n",
       "      <td>15.634822</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.339766</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-4.136908</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-5.608412</td>\n",
       "      <td>-13.374152</td>\n",
       "      <td>-2.819692</td>\n",
       "      <td>8.831761</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>-28.098806</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.855990</td>\n",
       "      <td>323.799421</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17.677298</td>\n",
       "      <td>10.156146</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.735167</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.911864</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-7.718215</td>\n",
       "      <td>-23.023483</td>\n",
       "      <td>2.456732</td>\n",
       "      <td>5.170948</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>-18.007501</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.430698</td>\n",
       "      <td>79.189014</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19.418985</td>\n",
       "      <td>1.287085</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.810969</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.732118</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-4.950200</td>\n",
       "      <td>-21.544210</td>\n",
       "      <td>3.747179</td>\n",
       "      <td>8.841426</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>-18.857457</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.593751</td>\n",
       "      <td>-87.472338</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.624722</td>\n",
       "      <td>0.509298</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.122962</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.996135</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-3.580750</td>\n",
       "      <td>-12.951562</td>\n",
       "      <td>1.065631</td>\n",
       "      <td>7.064294</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>14.643074</td>\n",
       "      <td>-0.084718</td>\n",
       "      <td>2.973536</td>\n",
       "      <td>-5.157903</td>\n",
       "      <td>-8.683178</td>\n",
       "      <td>10.213783</td>\n",
       "      <td>7.817511</td>\n",
       "      <td>43.913050</td>\n",
       "      <td>0.156409</td>\n",
       "      <td>6.297982</td>\n",
       "      <td>...</td>\n",
       "      <td>37.678562</td>\n",
       "      <td>78.453805</td>\n",
       "      <td>-0.970904</td>\n",
       "      <td>14.234132</td>\n",
       "      <td>0.533610</td>\n",
       "      <td>1.879944</td>\n",
       "      <td>19.294462</td>\n",
       "      <td>-8.219043</td>\n",
       "      <td>2.341262</td>\n",
       "      <td>-0.389266</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>4.749472</td>\n",
       "      <td>1.401158</td>\n",
       "      <td>1.859585</td>\n",
       "      <td>-7.851006</td>\n",
       "      <td>-28.767270</td>\n",
       "      <td>-7.099020</td>\n",
       "      <td>8.248977</td>\n",
       "      <td>8.071340</td>\n",
       "      <td>0.399966</td>\n",
       "      <td>21.832295</td>\n",
       "      <td>...</td>\n",
       "      <td>52.435060</td>\n",
       "      <td>159.531738</td>\n",
       "      <td>-2.038859</td>\n",
       "      <td>0.293222</td>\n",
       "      <td>-4.164331</td>\n",
       "      <td>7.942735</td>\n",
       "      <td>-26.275481</td>\n",
       "      <td>4.186000</td>\n",
       "      <td>-14.115324</td>\n",
       "      <td>-1.966566</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>-19.592378</td>\n",
       "      <td>2.152094</td>\n",
       "      <td>4.023866</td>\n",
       "      <td>15.826373</td>\n",
       "      <td>11.169571</td>\n",
       "      <td>-6.590268</td>\n",
       "      <td>1.319873</td>\n",
       "      <td>23.077974</td>\n",
       "      <td>-0.572788</td>\n",
       "      <td>26.379021</td>\n",
       "      <td>...</td>\n",
       "      <td>11.890597</td>\n",
       "      <td>492.021022</td>\n",
       "      <td>-1.559187</td>\n",
       "      <td>-14.057367</td>\n",
       "      <td>-4.993932</td>\n",
       "      <td>9.371978</td>\n",
       "      <td>9.627624</td>\n",
       "      <td>-7.310027</td>\n",
       "      <td>-15.163576</td>\n",
       "      <td>-0.192836</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>-18.075741</td>\n",
       "      <td>3.092678</td>\n",
       "      <td>3.101378</td>\n",
       "      <td>-24.963233</td>\n",
       "      <td>24.773653</td>\n",
       "      <td>-16.835694</td>\n",
       "      <td>8.487604</td>\n",
       "      <td>50.270795</td>\n",
       "      <td>-0.604910</td>\n",
       "      <td>12.820069</td>\n",
       "      <td>...</td>\n",
       "      <td>100.958756</td>\n",
       "      <td>400.304740</td>\n",
       "      <td>-1.789557</td>\n",
       "      <td>7.329427</td>\n",
       "      <td>4.930593</td>\n",
       "      <td>4.228034</td>\n",
       "      <td>-4.160422</td>\n",
       "      <td>0.577739</td>\n",
       "      <td>-13.694100</td>\n",
       "      <td>1.128460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>-7.656614</td>\n",
       "      <td>-2.454607</td>\n",
       "      <td>4.420638</td>\n",
       "      <td>-18.302221</td>\n",
       "      <td>8.566220</td>\n",
       "      <td>4.338635</td>\n",
       "      <td>12.291373</td>\n",
       "      <td>57.784287</td>\n",
       "      <td>-0.321368</td>\n",
       "      <td>26.963949</td>\n",
       "      <td>...</td>\n",
       "      <td>215.643816</td>\n",
       "      <td>275.657621</td>\n",
       "      <td>-2.023211</td>\n",
       "      <td>-1.930373</td>\n",
       "      <td>-1.275713</td>\n",
       "      <td>5.381577</td>\n",
       "      <td>18.947409</td>\n",
       "      <td>-9.015792</td>\n",
       "      <td>-13.142225</td>\n",
       "      <td>4.453015</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 37 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                        a        ag         al          au         bu  \\\n",
       "targettime                                                              \n",
       "20110105145900 -33.021591       NaN  11.176480   15.587694        NaN   \n",
       "20110106145900 -33.143338       NaN  12.195917    9.825574        NaN   \n",
       "20110107145900 -28.098806       NaN   7.855990  323.799421        NaN   \n",
       "20110110145900 -18.007501       NaN   4.430698   79.189014        NaN   \n",
       "20110111145900 -18.857457       NaN   7.593751  -87.472338        NaN   \n",
       "...                   ...       ...        ...         ...        ...   \n",
       "20220628145900  14.643074 -0.084718   2.973536   -5.157903  -8.683178   \n",
       "20220629145900   4.749472  1.401158   1.859585   -7.851006 -28.767270   \n",
       "20220630145900 -19.592378  2.152094   4.023866   15.826373  11.169571   \n",
       "20220701145900 -18.075741  3.092678   3.101378  -24.963233  24.773653   \n",
       "20220704145900  -7.656614 -2.454607   4.420638  -18.302221   8.566220   \n",
       "\n",
       "                        c         cf         cs        cu         eb  ...  \\\n",
       "targettime                                                            ...   \n",
       "20110105145900  14.572504  12.992385        NaN  2.690295        NaN  ...   \n",
       "20110106145900  11.912423  15.634822        NaN  3.339766        NaN  ...   \n",
       "20110107145900  17.677298  10.156146        NaN  3.735167        NaN  ...   \n",
       "20110110145900  19.418985   1.287085        NaN  2.810969        NaN  ...   \n",
       "20110111145900   3.624722   0.509298        NaN  1.122962        NaN  ...   \n",
       "...                   ...        ...        ...       ...        ...  ...   \n",
       "20220628145900  10.213783   7.817511  43.913050  0.156409   6.297982  ...   \n",
       "20220629145900  -7.099020   8.248977   8.071340  0.399966  21.832295  ...   \n",
       "20220630145900  -6.590268   1.319873  23.077974 -0.572788  26.379021  ...   \n",
       "20220701145900 -16.835694   8.487604  50.270795 -0.604910  12.820069  ...   \n",
       "20220704145900   4.338635  12.291373  57.784287 -0.321368  26.963949  ...   \n",
       "\n",
       "                        sa          sc        sn         sp        sr  \\\n",
       "targettime                                                              \n",
       "20110105145900         NaN         NaN       NaN        NaN -7.242539   \n",
       "20110106145900         NaN         NaN       NaN        NaN -4.136908   \n",
       "20110107145900         NaN         NaN       NaN        NaN -0.911864   \n",
       "20110110145900         NaN         NaN       NaN        NaN  4.732118   \n",
       "20110111145900         NaN         NaN       NaN        NaN  1.996135   \n",
       "...                    ...         ...       ...        ...       ...   \n",
       "20220628145900   37.678562   78.453805 -0.970904  14.234132  0.533610   \n",
       "20220629145900   52.435060  159.531738 -2.038859   0.293222 -4.164331   \n",
       "20220630145900   11.890597  492.021022 -1.559187 -14.057367 -4.993932   \n",
       "20220701145900  100.958756  400.304740 -1.789557   7.329427  4.930593   \n",
       "20220704145900  215.643816  275.657621 -2.023211  -1.930373 -1.275713   \n",
       "\n",
       "                      ss         ta          v          y         zn  \n",
       "targettime                                                            \n",
       "20110105145900       NaN  -7.474790 -28.909072  -4.401228  13.180839  \n",
       "20110106145900       NaN  -5.608412 -13.374152  -2.819692   8.831761  \n",
       "20110107145900       NaN  -7.718215 -23.023483   2.456732   5.170948  \n",
       "20110110145900       NaN  -4.950200 -21.544210   3.747179   8.841426  \n",
       "20110111145900       NaN  -3.580750 -12.951562   1.065631   7.064294  \n",
       "...                  ...        ...        ...        ...        ...  \n",
       "20220628145900  1.879944  19.294462  -8.219043   2.341262  -0.389266  \n",
       "20220629145900  7.942735 -26.275481   4.186000 -14.115324  -1.966566  \n",
       "20220630145900  9.371978   9.627624  -7.310027 -15.163576  -0.192836  \n",
       "20220701145900  4.228034  -4.160422   0.577739 -13.694100   1.128460  \n",
       "20220704145900  5.381577  18.947409  -9.015792 -13.142225   4.453015  \n",
       "\n",
       "[2787 rows x 37 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#每一天各交易品种的目标持有数量\n",
    "positiondf = targetdf.iloc[:,:-1].divide(tradepricedf) #目标持仓表1～n-1列，目标持仓市值/交易价格=目标持有数量\n",
    "positiondf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sa</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>targettime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>-33.021591</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.176480</td>\n",
       "      <td>15.587694</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.572504</td>\n",
       "      <td>12.992385</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.690295</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-7.242539</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-7.474790</td>\n",
       "      <td>-28.909072</td>\n",
       "      <td>-4.401228</td>\n",
       "      <td>13.180839</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>-0.121747</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.019436</td>\n",
       "      <td>-5.762120</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-2.660080</td>\n",
       "      <td>2.642437</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.649471</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.105631</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.866379</td>\n",
       "      <td>15.534920</td>\n",
       "      <td>1.581535</td>\n",
       "      <td>-4.349078</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>5.044532</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-4.339927</td>\n",
       "      <td>313.973847</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.764874</td>\n",
       "      <td>-5.478676</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.395402</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.225044</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-2.109803</td>\n",
       "      <td>-9.649331</td>\n",
       "      <td>5.276424</td>\n",
       "      <td>-3.660812</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>10.091305</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-3.425292</td>\n",
       "      <td>-244.610407</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.741687</td>\n",
       "      <td>-8.869061</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.924199</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.643982</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.768015</td>\n",
       "      <td>1.479273</td>\n",
       "      <td>1.290447</td>\n",
       "      <td>3.670478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>-0.849956</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.163053</td>\n",
       "      <td>-166.661352</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-15.794263</td>\n",
       "      <td>-0.777787</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-1.688006</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-2.735983</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.369450</td>\n",
       "      <td>8.592648</td>\n",
       "      <td>-2.681547</td>\n",
       "      <td>-1.777132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>13.389551</td>\n",
       "      <td>-2.069103</td>\n",
       "      <td>0.789566</td>\n",
       "      <td>9.931886</td>\n",
       "      <td>-47.220625</td>\n",
       "      <td>-4.550533</td>\n",
       "      <td>9.123653</td>\n",
       "      <td>-30.719060</td>\n",
       "      <td>0.569623</td>\n",
       "      <td>-6.944700</td>\n",
       "      <td>...</td>\n",
       "      <td>90.928229</td>\n",
       "      <td>167.267142</td>\n",
       "      <td>-0.658423</td>\n",
       "      <td>9.747584</td>\n",
       "      <td>-1.289650</td>\n",
       "      <td>-10.488831</td>\n",
       "      <td>18.975199</td>\n",
       "      <td>-13.683243</td>\n",
       "      <td>4.720301</td>\n",
       "      <td>2.518705</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>-9.893602</td>\n",
       "      <td>1.485876</td>\n",
       "      <td>-1.113951</td>\n",
       "      <td>-2.693103</td>\n",
       "      <td>-20.084092</td>\n",
       "      <td>-17.312803</td>\n",
       "      <td>0.431466</td>\n",
       "      <td>-35.841711</td>\n",
       "      <td>0.243558</td>\n",
       "      <td>15.534312</td>\n",
       "      <td>...</td>\n",
       "      <td>14.756498</td>\n",
       "      <td>81.077933</td>\n",
       "      <td>-1.067955</td>\n",
       "      <td>-13.940910</td>\n",
       "      <td>-4.697941</td>\n",
       "      <td>6.062791</td>\n",
       "      <td>-45.569943</td>\n",
       "      <td>12.405044</td>\n",
       "      <td>-16.456586</td>\n",
       "      <td>-1.577300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>-24.341849</td>\n",
       "      <td>0.750936</td>\n",
       "      <td>2.164281</td>\n",
       "      <td>23.677379</td>\n",
       "      <td>39.936841</td>\n",
       "      <td>0.508751</td>\n",
       "      <td>-6.929104</td>\n",
       "      <td>15.006634</td>\n",
       "      <td>-0.972754</td>\n",
       "      <td>4.546726</td>\n",
       "      <td>...</td>\n",
       "      <td>-40.544463</td>\n",
       "      <td>332.489283</td>\n",
       "      <td>0.479672</td>\n",
       "      <td>-14.350589</td>\n",
       "      <td>-0.829601</td>\n",
       "      <td>1.429243</td>\n",
       "      <td>35.903106</td>\n",
       "      <td>-11.496027</td>\n",
       "      <td>-1.048252</td>\n",
       "      <td>1.773730</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>1.516636</td>\n",
       "      <td>0.940584</td>\n",
       "      <td>-0.922488</td>\n",
       "      <td>-40.789606</td>\n",
       "      <td>13.604082</td>\n",
       "      <td>-10.245426</td>\n",
       "      <td>7.167731</td>\n",
       "      <td>27.192821</td>\n",
       "      <td>-0.032122</td>\n",
       "      <td>-13.558951</td>\n",
       "      <td>...</td>\n",
       "      <td>89.068159</td>\n",
       "      <td>-91.716282</td>\n",
       "      <td>-0.230370</td>\n",
       "      <td>21.386794</td>\n",
       "      <td>9.924525</td>\n",
       "      <td>-5.143943</td>\n",
       "      <td>-13.788046</td>\n",
       "      <td>7.887766</td>\n",
       "      <td>1.469476</td>\n",
       "      <td>1.321296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>10.419127</td>\n",
       "      <td>-5.547285</td>\n",
       "      <td>1.319260</td>\n",
       "      <td>6.661012</td>\n",
       "      <td>-16.207433</td>\n",
       "      <td>21.174329</td>\n",
       "      <td>3.803768</td>\n",
       "      <td>7.513493</td>\n",
       "      <td>0.283542</td>\n",
       "      <td>14.143879</td>\n",
       "      <td>...</td>\n",
       "      <td>114.685060</td>\n",
       "      <td>-124.647118</td>\n",
       "      <td>-0.233654</td>\n",
       "      <td>-9.259800</td>\n",
       "      <td>-6.206306</td>\n",
       "      <td>1.153543</td>\n",
       "      <td>23.107830</td>\n",
       "      <td>-9.593531</td>\n",
       "      <td>0.551875</td>\n",
       "      <td>3.324555</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 37 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                        a        ag         al          au         bu  \\\n",
       "targettime                                                              \n",
       "20110105145900 -33.021591       NaN  11.176480   15.587694        NaN   \n",
       "20110106145900  -0.121747       NaN   1.019436   -5.762120        NaN   \n",
       "20110107145900   5.044532       NaN  -4.339927  313.973847        NaN   \n",
       "20110110145900  10.091305       NaN  -3.425292 -244.610407        NaN   \n",
       "20110111145900  -0.849956       NaN   3.163053 -166.661352        NaN   \n",
       "...                   ...       ...        ...         ...        ...   \n",
       "20220628145900  13.389551 -2.069103   0.789566    9.931886 -47.220625   \n",
       "20220629145900  -9.893602  1.485876  -1.113951   -2.693103 -20.084092   \n",
       "20220630145900 -24.341849  0.750936   2.164281   23.677379  39.936841   \n",
       "20220701145900   1.516636  0.940584  -0.922488  -40.789606  13.604082   \n",
       "20220704145900  10.419127 -5.547285   1.319260    6.661012 -16.207433   \n",
       "\n",
       "                        c         cf         cs        cu         eb  ...  \\\n",
       "targettime                                                            ...   \n",
       "20110105145900  14.572504  12.992385        NaN  2.690295        NaN  ...   \n",
       "20110106145900  -2.660080   2.642437        NaN  0.649471        NaN  ...   \n",
       "20110107145900   5.764874  -5.478676        NaN  0.395402        NaN  ...   \n",
       "20110110145900   1.741687  -8.869061        NaN -0.924199        NaN  ...   \n",
       "20110111145900 -15.794263  -0.777787        NaN -1.688006        NaN  ...   \n",
       "...                   ...        ...        ...       ...        ...  ...   \n",
       "20220628145900  -4.550533   9.123653 -30.719060  0.569623  -6.944700  ...   \n",
       "20220629145900 -17.312803   0.431466 -35.841711  0.243558  15.534312  ...   \n",
       "20220630145900   0.508751  -6.929104  15.006634 -0.972754   4.546726  ...   \n",
       "20220701145900 -10.245426   7.167731  27.192821 -0.032122 -13.558951  ...   \n",
       "20220704145900  21.174329   3.803768   7.513493  0.283542  14.143879  ...   \n",
       "\n",
       "                        sa          sc        sn         sp        sr  \\\n",
       "targettime                                                              \n",
       "20110105145900         NaN         NaN       NaN        NaN -7.242539   \n",
       "20110106145900         NaN         NaN       NaN        NaN  3.105631   \n",
       "20110107145900         NaN         NaN       NaN        NaN  3.225044   \n",
       "20110110145900         NaN         NaN       NaN        NaN  5.643982   \n",
       "20110111145900         NaN         NaN       NaN        NaN -2.735983   \n",
       "...                    ...         ...       ...        ...       ...   \n",
       "20220628145900   90.928229  167.267142 -0.658423   9.747584 -1.289650   \n",
       "20220629145900   14.756498   81.077933 -1.067955 -13.940910 -4.697941   \n",
       "20220630145900  -40.544463  332.489283  0.479672 -14.350589 -0.829601   \n",
       "20220701145900   89.068159  -91.716282 -0.230370  21.386794  9.924525   \n",
       "20220704145900  114.685060 -124.647118 -0.233654  -9.259800 -6.206306   \n",
       "\n",
       "                       ss         ta          v          y         zn  \n",
       "targettime                                                             \n",
       "20110105145900        NaN  -7.474790 -28.909072  -4.401228  13.180839  \n",
       "20110106145900        NaN   1.866379  15.534920   1.581535  -4.349078  \n",
       "20110107145900        NaN  -2.109803  -9.649331   5.276424  -3.660812  \n",
       "20110110145900        NaN   2.768015   1.479273   1.290447   3.670478  \n",
       "20110111145900        NaN   1.369450   8.592648  -2.681547  -1.777132  \n",
       "...                   ...        ...        ...        ...        ...  \n",
       "20220628145900 -10.488831  18.975199 -13.683243   4.720301   2.518705  \n",
       "20220629145900   6.062791 -45.569943  12.405044 -16.456586  -1.577300  \n",
       "20220630145900   1.429243  35.903106 -11.496027  -1.048252   1.773730  \n",
       "20220701145900  -5.143943 -13.788046   7.887766   1.469476   1.321296  \n",
       "20220704145900   1.153543  23.107830  -9.593531   0.551875   3.324555  \n",
       "\n",
       "[2787 rows x 37 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#生成每个交易品种持有份额变化表\n",
    "delta_positiondf = positiondf.apply(lambda x:x-x.shift()) #持有数量表后一行减前一行\n",
    "delta_positiondf.loc[list(positiondf.index)[0]] = positiondf.loc[list(positiondf.index)[0]] #第一行则保持不变\n",
    "delta_positiondf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "      <th>turnover</th>\n",
       "      <th>turnover_abs</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>targettime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>147771.619605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-188211.926556</td>\n",
       "      <td>-4675.528818</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-33939.361097</td>\n",
       "      <td>-367294.714956</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-191791.127128</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>52059.370350</td>\n",
       "      <td>NaN</td>\n",
       "      <td>78784.288752</td>\n",
       "      <td>243558.934565</td>\n",
       "      <td>46265.704896</td>\n",
       "      <td>-256696.835487</td>\n",
       "      <td>-968202.688961</td>\n",
       "      <td>968202.688961</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>552.730848</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-17279.447159</td>\n",
       "      <td>1722.355315</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6203.307439</td>\n",
       "      <td>-77344.140227</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-46774.886483</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-22298.430285</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-19977.716830</td>\n",
       "      <td>-132435.196212</td>\n",
       "      <td>-17077.417870</td>\n",
       "      <td>86307.455597</td>\n",
       "      <td>-139108.233287</td>\n",
       "      <td>139108.233287</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>-22387.631698</td>\n",
       "      <td>NaN</td>\n",
       "      <td>73127.764606</td>\n",
       "      <td>-93253.372295</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-13293.800168</td>\n",
       "      <td>154580.830152</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-27595.087891</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-22168.953178</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21836.461701</td>\n",
       "      <td>78690.292085</td>\n",
       "      <td>-55856.223608</td>\n",
       "      <td>70031.340890</td>\n",
       "      <td>-14969.065831</td>\n",
       "      <td>14969.065831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>-44855.849793</td>\n",
       "      <td>NaN</td>\n",
       "      <td>57818.934400</td>\n",
       "      <td>73189.879743</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-4018.071892</td>\n",
       "      <td>251925.677703</td>\n",
       "      <td>NaN</td>\n",
       "      <td>64730.883601</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-39282.114468</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-28781.820664</td>\n",
       "      <td>-12011.698038</td>\n",
       "      <td>-13606.474228</td>\n",
       "      <td>-70161.188261</td>\n",
       "      <td>275872.929937</td>\n",
       "      <td>275872.929937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>3789.952326</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-53297.446482</td>\n",
       "      <td>49941.740822</td>\n",
       "      <td>NaN</td>\n",
       "      <td>36421.569752</td>\n",
       "      <td>22408.055855</td>\n",
       "      <td>NaN</td>\n",
       "      <td>119696.539793</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19165.562913</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-14255.970912</td>\n",
       "      <td>-69987.115983</td>\n",
       "      <td>28451.215573</td>\n",
       "      <td>34147.599430</td>\n",
       "      <td>547095.295128</td>\n",
       "      <td>547095.295128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>-70563.478624</td>\n",
       "      <td>6803.094414</td>\n",
       "      <td>-14474.591913</td>\n",
       "      <td>-3230.153404</td>\n",
       "      <td>108708.622397</td>\n",
       "      <td>15459.874802</td>\n",
       "      <td>-150954.411787</td>\n",
       "      <td>98607.267650</td>\n",
       "      <td>-41037.270530</td>\n",
       "      <td>70697.986727</td>\n",
       "      <td>...</td>\n",
       "      <td>144427.079903</td>\n",
       "      <td>-62922.254654</td>\n",
       "      <td>7028.987005</td>\n",
       "      <td>250599.366066</td>\n",
       "      <td>-135990.658482</td>\n",
       "      <td>109304.407094</td>\n",
       "      <td>-42004.068589</td>\n",
       "      <td>-70500.983410</td>\n",
       "      <td>74951.180347</td>\n",
       "      <td>74951.180347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>51835.439126</td>\n",
       "      <td>-4801.700979</td>\n",
       "      <td>20248.039750</td>\n",
       "      <td>874.460945</td>\n",
       "      <td>46005.567103</td>\n",
       "      <td>58713.683536</td>\n",
       "      <td>-7120.555048</td>\n",
       "      <td>115050.823273</td>\n",
       "      <td>-17170.743563</td>\n",
       "      <td>-154922.275930</td>\n",
       "      <td>...</td>\n",
       "      <td>214102.331706</td>\n",
       "      <td>89627.367481</td>\n",
       "      <td>25470.136263</td>\n",
       "      <td>-143215.082722</td>\n",
       "      <td>314824.164536</td>\n",
       "      <td>-97692.198324</td>\n",
       "      <td>145057.180094</td>\n",
       "      <td>43731.581839</td>\n",
       "      <td>248416.604041</td>\n",
       "      <td>248416.604041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>127812.013282</td>\n",
       "      <td>-2423.481091</td>\n",
       "      <td>-38900.965582</td>\n",
       "      <td>-7677.612399</td>\n",
       "      <td>-91960.272695</td>\n",
       "      <td>-1706.323763</td>\n",
       "      <td>114839.882218</td>\n",
       "      <td>-47523.349772</td>\n",
       "      <td>68956.873195</td>\n",
       "      <td>-45767.394248</td>\n",
       "      <td>...</td>\n",
       "      <td>-97390.035331</td>\n",
       "      <td>92047.415466</td>\n",
       "      <td>4495.414952</td>\n",
       "      <td>-34269.376196</td>\n",
       "      <td>-247963.320751</td>\n",
       "      <td>90867.537429</td>\n",
       "      <td>9243.449658</td>\n",
       "      <td>-48635.404173</td>\n",
       "      <td>-430139.767551</td>\n",
       "      <td>430139.767551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>-7902.121343</td>\n",
       "      <td>-2920.739324</td>\n",
       "      <td>16437.369048</td>\n",
       "      <td>13107.564257</td>\n",
       "      <td>-30251.016342</td>\n",
       "      <td>33423.183101</td>\n",
       "      <td>-116473.388939</td>\n",
       "      <td>-84313.963848</td>\n",
       "      <td>2198.280901</td>\n",
       "      <td>133566.178519</td>\n",
       "      <td>...</td>\n",
       "      <td>44334.714462</td>\n",
       "      <td>-134311.126951</td>\n",
       "      <td>-53520.968644</td>\n",
       "      <td>119718.879551</td>\n",
       "      <td>92461.264757</td>\n",
       "      <td>-60861.455351</td>\n",
       "      <td>-12284.689532</td>\n",
       "      <td>-34926.282945</td>\n",
       "      <td>-130303.629722</td>\n",
       "      <td>130303.629722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>-53847.291708</td>\n",
       "      <td>17130.635865</td>\n",
       "      <td>-23606.762765</td>\n",
       "      <td>-2151.233236</td>\n",
       "      <td>36283.036529</td>\n",
       "      <td>-69459.230669</td>\n",
       "      <td>-61792.194205</td>\n",
       "      <td>-23507.407523</td>\n",
       "      <td>-19095.608564</td>\n",
       "      <td>-142995.447790</td>\n",
       "      <td>...</td>\n",
       "      <td>46224.286905</td>\n",
       "      <td>57807.523319</td>\n",
       "      <td>33480.875900</td>\n",
       "      <td>-26806.289000</td>\n",
       "      <td>-160431.425936</td>\n",
       "      <td>72226.649613</td>\n",
       "      <td>-4610.785102</td>\n",
       "      <td>-87380.456079</td>\n",
       "      <td>-686142.768355</td>\n",
       "      <td>686142.768355</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 39 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            a            ag             al            au  \\\n",
       "targettime                                                                 \n",
       "20110105145900  147771.619605           NaN -188211.926556  -4675.528818   \n",
       "20110106145900     552.730848           NaN  -17279.447159   1722.355315   \n",
       "20110107145900  -22387.631698           NaN   73127.764606 -93253.372295   \n",
       "20110110145900  -44855.849793           NaN   57818.934400  73189.879743   \n",
       "20110111145900    3789.952326           NaN  -53297.446482  49941.740822   \n",
       "...                       ...           ...            ...           ...   \n",
       "20220628145900  -70563.478624   6803.094414  -14474.591913  -3230.153404   \n",
       "20220629145900   51835.439126  -4801.700979   20248.039750    874.460945   \n",
       "20220630145900  127812.013282  -2423.481091  -38900.965582  -7677.612399   \n",
       "20220701145900   -7902.121343  -2920.739324   16437.369048  13107.564257   \n",
       "20220704145900  -53847.291708  17130.635865  -23606.762765  -2151.233236   \n",
       "\n",
       "                           bu             c             cf             cs  \\\n",
       "targettime                                                                  \n",
       "20110105145900            NaN -33939.361097 -367294.714956            NaN   \n",
       "20110106145900            NaN   6203.307439  -77344.140227            NaN   \n",
       "20110107145900            NaN -13293.800168  154580.830152            NaN   \n",
       "20110110145900            NaN  -4018.071892  251925.677703            NaN   \n",
       "20110111145900            NaN  36421.569752   22408.055855            NaN   \n",
       "...                       ...           ...            ...            ...   \n",
       "20220628145900  108708.622397  15459.874802 -150954.411787   98607.267650   \n",
       "20220629145900   46005.567103  58713.683536   -7120.555048  115050.823273   \n",
       "20220630145900  -91960.272695  -1706.323763  114839.882218  -47523.349772   \n",
       "20220701145900  -30251.016342  33423.183101 -116473.388939  -84313.963848   \n",
       "20220704145900   36283.036529 -69459.230669  -61792.194205  -23507.407523   \n",
       "\n",
       "                           cu             eb  ...             sn  \\\n",
       "targettime                                    ...                  \n",
       "20110105145900 -191791.127128            NaN  ...            NaN   \n",
       "20110106145900  -46774.886483            NaN  ...            NaN   \n",
       "20110107145900  -27595.087891            NaN  ...            NaN   \n",
       "20110110145900   64730.883601            NaN  ...            NaN   \n",
       "20110111145900  119696.539793            NaN  ...            NaN   \n",
       "...                       ...            ...  ...            ...   \n",
       "20220628145900  -41037.270530   70697.986727  ...  144427.079903   \n",
       "20220629145900  -17170.743563 -154922.275930  ...  214102.331706   \n",
       "20220630145900   68956.873195  -45767.394248  ...  -97390.035331   \n",
       "20220701145900    2198.280901  133566.178519  ...   44334.714462   \n",
       "20220704145900  -19095.608564 -142995.447790  ...   46224.286905   \n",
       "\n",
       "                           sp            sr             ss             ta  \\\n",
       "targettime                                                                  \n",
       "20110105145900            NaN  52059.370350            NaN   78784.288752   \n",
       "20110106145900            NaN -22298.430285            NaN  -19977.716830   \n",
       "20110107145900            NaN -22168.953178            NaN   21836.461701   \n",
       "20110110145900            NaN -39282.114468            NaN  -28781.820664   \n",
       "20110111145900            NaN  19165.562913            NaN  -14255.970912   \n",
       "...                       ...           ...            ...            ...   \n",
       "20220628145900  -62922.254654   7028.987005  250599.366066 -135990.658482   \n",
       "20220629145900   89627.367481  25470.136263 -143215.082722  314824.164536   \n",
       "20220630145900   92047.415466   4495.414952  -34269.376196 -247963.320751   \n",
       "20220701145900 -134311.126951 -53520.968644  119718.879551   92461.264757   \n",
       "20220704145900   57807.523319  33480.875900  -26806.289000 -160431.425936   \n",
       "\n",
       "                            v              y             zn       turnover  \\\n",
       "targettime                                                                   \n",
       "20110105145900  243558.934565   46265.704896 -256696.835487 -968202.688961   \n",
       "20110106145900 -132435.196212  -17077.417870   86307.455597 -139108.233287   \n",
       "20110107145900   78690.292085  -55856.223608   70031.340890  -14969.065831   \n",
       "20110110145900  -12011.698038  -13606.474228  -70161.188261  275872.929937   \n",
       "20110111145900  -69987.115983   28451.215573   34147.599430  547095.295128   \n",
       "...                       ...            ...            ...            ...   \n",
       "20220628145900  109304.407094  -42004.068589  -70500.983410   74951.180347   \n",
       "20220629145900  -97692.198324  145057.180094   43731.581839  248416.604041   \n",
       "20220630145900   90867.537429    9243.449658  -48635.404173 -430139.767551   \n",
       "20220701145900  -60861.455351  -12284.689532  -34926.282945 -130303.629722   \n",
       "20220704145900   72226.649613   -4610.785102  -87380.456079 -686142.768355   \n",
       "\n",
       "                 turnover_abs  \n",
       "targettime                     \n",
       "20110105145900  968202.688961  \n",
       "20110106145900  139108.233287  \n",
       "20110107145900   14969.065831  \n",
       "20110110145900  275872.929937  \n",
       "20110111145900  547095.295128  \n",
       "...                       ...  \n",
       "20220628145900   74951.180347  \n",
       "20220629145900  248416.604041  \n",
       "20220630145900  430139.767551  \n",
       "20220701145900  130303.629722  \n",
       "20220704145900  686142.768355  \n",
       "\n",
       "[2787 rows x 39 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#生成现金流变化表，即turnover\n",
    "delta_cash_df = -delta_positiondf.mul(tradepricedf) #调仓所需资金=持有份额变化*交易时点价格\n",
    "#生成当日现金流变化总量\n",
    "delta_cash_df['turnover'] = delta_cash_df.apply(lambda x:x.sum(), axis=1) #每一时点对应所有品种的现金变化相加\n",
    "delta_cash_df['turnover_abs'] = delta_cash_df['turnover'].abs() #生成现金流变化绝对值\n",
    "delta_cash_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "      <th>totalfee</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>targettime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>44.331486</td>\n",
       "      <td>NaN</td>\n",
       "      <td>56.463578</td>\n",
       "      <td>1.402659</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10.181808</td>\n",
       "      <td>110.188414</td>\n",
       "      <td>NaN</td>\n",
       "      <td>57.537338</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>15.617811</td>\n",
       "      <td>NaN</td>\n",
       "      <td>23.635287</td>\n",
       "      <td>73.067680</td>\n",
       "      <td>13.879711</td>\n",
       "      <td>77.009051</td>\n",
       "      <td>813.575924</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>0.165819</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.183834</td>\n",
       "      <td>0.516707</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.860992</td>\n",
       "      <td>23.203242</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.032466</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.689529</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.993315</td>\n",
       "      <td>39.730559</td>\n",
       "      <td>5.123225</td>\n",
       "      <td>25.892237</td>\n",
       "      <td>248.544099</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>6.716290</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21.938329</td>\n",
       "      <td>27.976012</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.988140</td>\n",
       "      <td>46.374249</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8.278526</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.650686</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.550939</td>\n",
       "      <td>23.607088</td>\n",
       "      <td>16.756867</td>\n",
       "      <td>21.009402</td>\n",
       "      <td>266.523649</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>13.456755</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17.345680</td>\n",
       "      <td>21.956964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.205422</td>\n",
       "      <td>75.577703</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19.419265</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.784634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8.634546</td>\n",
       "      <td>3.603509</td>\n",
       "      <td>4.081942</td>\n",
       "      <td>21.048356</td>\n",
       "      <td>277.409545</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>1.136986</td>\n",
       "      <td>NaN</td>\n",
       "      <td>15.989234</td>\n",
       "      <td>14.982522</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10.926471</td>\n",
       "      <td>6.722417</td>\n",
       "      <td>NaN</td>\n",
       "      <td>35.908962</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.749669</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.276791</td>\n",
       "      <td>20.996135</td>\n",
       "      <td>8.535365</td>\n",
       "      <td>10.244280</td>\n",
       "      <td>266.249919</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>21.169044</td>\n",
       "      <td>2.040928</td>\n",
       "      <td>4.342378</td>\n",
       "      <td>0.969046</td>\n",
       "      <td>32.612587</td>\n",
       "      <td>4.637962</td>\n",
       "      <td>45.286324</td>\n",
       "      <td>29.582180</td>\n",
       "      <td>12.311181</td>\n",
       "      <td>21.209396</td>\n",
       "      <td>...</td>\n",
       "      <td>23.223867</td>\n",
       "      <td>43.328124</td>\n",
       "      <td>18.876676</td>\n",
       "      <td>2.108696</td>\n",
       "      <td>75.179810</td>\n",
       "      <td>40.797198</td>\n",
       "      <td>32.791322</td>\n",
       "      <td>12.601221</td>\n",
       "      <td>21.150295</td>\n",
       "      <td>860.324238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>15.550632</td>\n",
       "      <td>1.440510</td>\n",
       "      <td>6.074412</td>\n",
       "      <td>0.262338</td>\n",
       "      <td>13.801670</td>\n",
       "      <td>17.614105</td>\n",
       "      <td>2.136167</td>\n",
       "      <td>34.515247</td>\n",
       "      <td>5.151223</td>\n",
       "      <td>46.476683</td>\n",
       "      <td>...</td>\n",
       "      <td>11.258648</td>\n",
       "      <td>64.230700</td>\n",
       "      <td>26.888210</td>\n",
       "      <td>7.641041</td>\n",
       "      <td>42.964525</td>\n",
       "      <td>94.447249</td>\n",
       "      <td>29.307659</td>\n",
       "      <td>43.517154</td>\n",
       "      <td>13.119475</td>\n",
       "      <td>915.909562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>38.343604</td>\n",
       "      <td>0.727044</td>\n",
       "      <td>11.670290</td>\n",
       "      <td>2.303284</td>\n",
       "      <td>27.588082</td>\n",
       "      <td>0.511897</td>\n",
       "      <td>34.451965</td>\n",
       "      <td>14.257005</td>\n",
       "      <td>20.687062</td>\n",
       "      <td>13.730218</td>\n",
       "      <td>...</td>\n",
       "      <td>45.738707</td>\n",
       "      <td>29.217011</td>\n",
       "      <td>27.614225</td>\n",
       "      <td>1.348624</td>\n",
       "      <td>10.280813</td>\n",
       "      <td>74.388996</td>\n",
       "      <td>27.260261</td>\n",
       "      <td>2.773035</td>\n",
       "      <td>14.590621</td>\n",
       "      <td>786.667601</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>2.370636</td>\n",
       "      <td>0.876222</td>\n",
       "      <td>4.931211</td>\n",
       "      <td>3.932269</td>\n",
       "      <td>9.075305</td>\n",
       "      <td>10.026955</td>\n",
       "      <td>34.942017</td>\n",
       "      <td>25.294189</td>\n",
       "      <td>0.659484</td>\n",
       "      <td>40.069854</td>\n",
       "      <td>...</td>\n",
       "      <td>12.189861</td>\n",
       "      <td>13.300414</td>\n",
       "      <td>40.293338</td>\n",
       "      <td>16.056291</td>\n",
       "      <td>35.915664</td>\n",
       "      <td>27.738379</td>\n",
       "      <td>18.258437</td>\n",
       "      <td>3.685407</td>\n",
       "      <td>10.477885</td>\n",
       "      <td>793.060278</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>16.154188</td>\n",
       "      <td>5.139191</td>\n",
       "      <td>7.082029</td>\n",
       "      <td>0.645370</td>\n",
       "      <td>10.884911</td>\n",
       "      <td>20.837769</td>\n",
       "      <td>18.537658</td>\n",
       "      <td>7.052222</td>\n",
       "      <td>5.728683</td>\n",
       "      <td>42.898634</td>\n",
       "      <td>...</td>\n",
       "      <td>17.059006</td>\n",
       "      <td>13.867286</td>\n",
       "      <td>17.342257</td>\n",
       "      <td>10.044263</td>\n",
       "      <td>8.041887</td>\n",
       "      <td>48.129428</td>\n",
       "      <td>21.667995</td>\n",
       "      <td>1.383236</td>\n",
       "      <td>26.214137</td>\n",
       "      <td>688.360736</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 38 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                        a        ag         al         au         bu  \\\n",
       "targettime                                                             \n",
       "20110105145900  44.331486       NaN  56.463578   1.402659        NaN   \n",
       "20110106145900   0.165819       NaN   5.183834   0.516707        NaN   \n",
       "20110107145900   6.716290       NaN  21.938329  27.976012        NaN   \n",
       "20110110145900  13.456755       NaN  17.345680  21.956964        NaN   \n",
       "20110111145900   1.136986       NaN  15.989234  14.982522        NaN   \n",
       "...                   ...       ...        ...        ...        ...   \n",
       "20220628145900  21.169044  2.040928   4.342378   0.969046  32.612587   \n",
       "20220629145900  15.550632  1.440510   6.074412   0.262338  13.801670   \n",
       "20220630145900  38.343604  0.727044  11.670290   2.303284  27.588082   \n",
       "20220701145900   2.370636  0.876222   4.931211   3.932269   9.075305   \n",
       "20220704145900  16.154188  5.139191   7.082029   0.645370  10.884911   \n",
       "\n",
       "                        c          cf         cs         cu         eb  ...  \\\n",
       "targettime                                                              ...   \n",
       "20110105145900  10.181808  110.188414        NaN  57.537338        NaN  ...   \n",
       "20110106145900   1.860992   23.203242        NaN  14.032466        NaN  ...   \n",
       "20110107145900   3.988140   46.374249        NaN   8.278526        NaN  ...   \n",
       "20110110145900   1.205422   75.577703        NaN  19.419265        NaN  ...   \n",
       "20110111145900  10.926471    6.722417        NaN  35.908962        NaN  ...   \n",
       "...                   ...         ...        ...        ...        ...  ...   \n",
       "20220628145900   4.637962   45.286324  29.582180  12.311181  21.209396  ...   \n",
       "20220629145900  17.614105    2.136167  34.515247   5.151223  46.476683  ...   \n",
       "20220630145900   0.511897   34.451965  14.257005  20.687062  13.730218  ...   \n",
       "20220701145900  10.026955   34.942017  25.294189   0.659484  40.069854  ...   \n",
       "20220704145900  20.837769   18.537658   7.052222   5.728683  42.898634  ...   \n",
       "\n",
       "                       sc         sn         sp         sr         ss  \\\n",
       "targettime                                                              \n",
       "20110105145900        NaN        NaN        NaN  15.617811        NaN   \n",
       "20110106145900        NaN        NaN        NaN   6.689529        NaN   \n",
       "20110107145900        NaN        NaN        NaN   6.650686        NaN   \n",
       "20110110145900        NaN        NaN        NaN  11.784634        NaN   \n",
       "20110111145900        NaN        NaN        NaN   5.749669        NaN   \n",
       "...                   ...        ...        ...        ...        ...   \n",
       "20220628145900  23.223867  43.328124  18.876676   2.108696  75.179810   \n",
       "20220629145900  11.258648  64.230700  26.888210   7.641041  42.964525   \n",
       "20220630145900  45.738707  29.217011  27.614225   1.348624  10.280813   \n",
       "20220701145900  12.189861  13.300414  40.293338  16.056291  35.915664   \n",
       "20220704145900  17.059006  13.867286  17.342257  10.044263   8.041887   \n",
       "\n",
       "                       ta          v          y         zn    totalfee  \n",
       "targettime                                                              \n",
       "20110105145900  23.635287  73.067680  13.879711  77.009051  813.575924  \n",
       "20110106145900   5.993315  39.730559   5.123225  25.892237  248.544099  \n",
       "20110107145900   6.550939  23.607088  16.756867  21.009402  266.523649  \n",
       "20110110145900   8.634546   3.603509   4.081942  21.048356  277.409545  \n",
       "20110111145900   4.276791  20.996135   8.535365  10.244280  266.249919  \n",
       "...                   ...        ...        ...        ...         ...  \n",
       "20220628145900  40.797198  32.791322  12.601221  21.150295  860.324238  \n",
       "20220629145900  94.447249  29.307659  43.517154  13.119475  915.909562  \n",
       "20220630145900  74.388996  27.260261   2.773035  14.590621  786.667601  \n",
       "20220701145900  27.738379  18.258437   3.685407  10.477885  793.060278  \n",
       "20220704145900  48.129428  21.667995   1.383236  26.214137  688.360736  \n",
       "\n",
       "[2787 rows x 38 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#然而在实际交易中，调整持仓份额是具有成本的，即交易的手续费\n",
    "fee_df = delta_cash_df.iloc[:,:-2].multiply(0.0003) #除去现金流量表最后两列，手续费为0.03%\n",
    "fee_df = fee_df.abs() #所有费用均为正数，故取绝对值\n",
    "fee_df['totalfee'] = fee_df.apply(lambda x:x.sum(),axis=1) #每一时点对应所有品种的手续费相加\n",
    "fee_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>ag</th>\n",
       "      <th>al</th>\n",
       "      <th>au</th>\n",
       "      <th>bu</th>\n",
       "      <th>c</th>\n",
       "      <th>cf</th>\n",
       "      <th>cs</th>\n",
       "      <th>cu</th>\n",
       "      <th>eb</th>\n",
       "      <th>...</th>\n",
       "      <th>sc</th>\n",
       "      <th>sn</th>\n",
       "      <th>sp</th>\n",
       "      <th>sr</th>\n",
       "      <th>ss</th>\n",
       "      <th>ta</th>\n",
       "      <th>v</th>\n",
       "      <th>y</th>\n",
       "      <th>zn</th>\n",
       "      <th>totalCloseValue</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>targettime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20110105145900</th>\n",
       "      <td>-147771.619605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>188211.926556</td>\n",
       "      <td>4675.528818</td>\n",
       "      <td>NaN</td>\n",
       "      <td>33939.361097</td>\n",
       "      <td>367294.714956</td>\n",
       "      <td>NaN</td>\n",
       "      <td>191791.127128</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-52059.370350</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-78784.288752</td>\n",
       "      <td>-243558.934565</td>\n",
       "      <td>-46265.704896</td>\n",
       "      <td>256696.835487</td>\n",
       "      <td>9.682027e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110106145900</th>\n",
       "      <td>-150470.753867</td>\n",
       "      <td>NaN</td>\n",
       "      <td>206720.786537</td>\n",
       "      <td>2936.962301</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27779.771169</td>\n",
       "      <td>457631.239865</td>\n",
       "      <td>NaN</td>\n",
       "      <td>240529.928927</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-29702.999753</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-60032.437516</td>\n",
       "      <td>-114014.645588</td>\n",
       "      <td>-30447.038129</td>\n",
       "      <td>175266.290243</td>\n",
       "      <td>1.137293e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110107145900</th>\n",
       "      <td>-124702.501707</td>\n",
       "      <td>NaN</td>\n",
       "      <td>132373.430270</td>\n",
       "      <td>96171.666005</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40763.848331</td>\n",
       "      <td>286555.672505</td>\n",
       "      <td>NaN</td>\n",
       "      <td>260677.339207</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-6268.152713</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-79883.521519</td>\n",
       "      <td>-187756.501442</td>\n",
       "      <td>26006.960260</td>\n",
       "      <td>98920.240483</td>\n",
       "      <td>1.116347e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110110145900</th>\n",
       "      <td>-80043.343558</td>\n",
       "      <td>NaN</td>\n",
       "      <td>74790.175567</td>\n",
       "      <td>23694.144989</td>\n",
       "      <td>NaN</td>\n",
       "      <td>44799.597521</td>\n",
       "      <td>36559.662631</td>\n",
       "      <td>NaN</td>\n",
       "      <td>196880.247479</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>32935.541456</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-51472.175158</td>\n",
       "      <td>-174938.981510</td>\n",
       "      <td>39510.251762</td>\n",
       "      <td>169003.864520</td>\n",
       "      <td>8.439784e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20110111145900</th>\n",
       "      <td>-84085.400902</td>\n",
       "      <td>NaN</td>\n",
       "      <td>127954.701121</td>\n",
       "      <td>-26211.960777</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8358.608784</td>\n",
       "      <td>14672.876389</td>\n",
       "      <td>NaN</td>\n",
       "      <td>79629.250451</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13982.923854</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-37275.606641</td>\n",
       "      <td>-105490.470765</td>\n",
       "      <td>11306.349980</td>\n",
       "      <td>135740.407725</td>\n",
       "      <td>3.028461e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220628145900</th>\n",
       "      <td>77169.597465</td>\n",
       "      <td>-278.548730</td>\n",
       "      <td>54511.866699</td>\n",
       "      <td>-1677.507868</td>\n",
       "      <td>-19989.916041</td>\n",
       "      <td>34700.073258</td>\n",
       "      <td>129343.778576</td>\n",
       "      <td>140959.582861</td>\n",
       "      <td>11268.134809</td>\n",
       "      <td>64114.309836</td>\n",
       "      <td>...</td>\n",
       "      <td>36309.197501</td>\n",
       "      <td>-212970.595343</td>\n",
       "      <td>91883.658490</td>\n",
       "      <td>2908.335777</td>\n",
       "      <td>44915.672785</td>\n",
       "      <td>138278.736625</td>\n",
       "      <td>-65655.316959</td>\n",
       "      <td>20833.954965</td>\n",
       "      <td>-10895.941307</td>\n",
       "      <td>2.656586e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220629145900</th>\n",
       "      <td>24883.852252</td>\n",
       "      <td>4527.928752</td>\n",
       "      <td>33801.268039</td>\n",
       "      <td>-2549.251789</td>\n",
       "      <td>-65895.663763</td>\n",
       "      <td>-24075.222624</td>\n",
       "      <td>136134.094189</td>\n",
       "      <td>25908.759588</td>\n",
       "      <td>28197.505165</td>\n",
       "      <td>217731.475909</td>\n",
       "      <td>...</td>\n",
       "      <td>73843.014761</td>\n",
       "      <td>-408747.957618</td>\n",
       "      <td>1885.151015</td>\n",
       "      <td>-22577.143987</td>\n",
       "      <td>187623.082822</td>\n",
       "      <td>-181526.591093</td>\n",
       "      <td>32965.590550</td>\n",
       "      <td>-124420.037119</td>\n",
       "      <td>-54524.222796</td>\n",
       "      <td>3.376917e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630145900</th>\n",
       "      <td>-102873.911478</td>\n",
       "      <td>6945.409938</td>\n",
       "      <td>72325.300393</td>\n",
       "      <td>5131.850081</td>\n",
       "      <td>25719.530177</td>\n",
       "      <td>-22103.394805</td>\n",
       "      <td>21874.988824</td>\n",
       "      <td>73083.851572</td>\n",
       "      <td>-40603.948710</td>\n",
       "      <td>265531.496865</td>\n",
       "      <td>...</td>\n",
       "      <td>225615.343157</td>\n",
       "      <td>-316569.198183</td>\n",
       "      <td>-90166.633283</td>\n",
       "      <td>-27060.971012</td>\n",
       "      <td>224714.707555</td>\n",
       "      <td>66492.790990</td>\n",
       "      <td>-57780.319257</td>\n",
       "      <td>-133711.918088</td>\n",
       "      <td>-5287.531938</td>\n",
       "      <td>4.554968e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220701145900</th>\n",
       "      <td>-94179.922678</td>\n",
       "      <td>9603.507709</td>\n",
       "      <td>55261.984607</td>\n",
       "      <td>-8021.827359</td>\n",
       "      <td>55088.478846</td>\n",
       "      <td>-54922.312436</td>\n",
       "      <td>137920.914090</td>\n",
       "      <td>155869.445901</td>\n",
       "      <td>-41396.830603</td>\n",
       "      <td>126287.618512</td>\n",
       "      <td>...</td>\n",
       "      <td>177346.164335</td>\n",
       "      <td>-344400.305158</td>\n",
       "      <td>46029.510392</td>\n",
       "      <td>26589.697596</td>\n",
       "      <td>98402.242928</td>\n",
       "      <td>-27899.373475</td>\n",
       "      <td>4457.794484</td>\n",
       "      <td>-114481.492734</td>\n",
       "      <td>29828.982011</td>\n",
       "      <td>5.855003e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220704145900</th>\n",
       "      <td>-39570.297701</td>\n",
       "      <td>-7580.100849</td>\n",
       "      <td>79102.660535</td>\n",
       "      <td>-5910.865578</td>\n",
       "      <td>19176.908797</td>\n",
       "      <td>14232.245642</td>\n",
       "      <td>199673.269788</td>\n",
       "      <td>180789.262642</td>\n",
       "      <td>-21643.063473</td>\n",
       "      <td>272607.100164</td>\n",
       "      <td>...</td>\n",
       "      <td>125753.543618</td>\n",
       "      <td>-400257.038097</td>\n",
       "      <td>-12051.023072</td>\n",
       "      <td>-6882.031521</td>\n",
       "      <td>125058.299495</td>\n",
       "      <td>131546.742103</td>\n",
       "      <td>-67877.035916</td>\n",
       "      <td>-109800.228568</td>\n",
       "      <td>117040.177171</td>\n",
       "      <td>1.285433e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 38 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            a           ag             al            au  \\\n",
       "targettime                                                                \n",
       "20110105145900 -147771.619605          NaN  188211.926556   4675.528818   \n",
       "20110106145900 -150470.753867          NaN  206720.786537   2936.962301   \n",
       "20110107145900 -124702.501707          NaN  132373.430270  96171.666005   \n",
       "20110110145900  -80043.343558          NaN   74790.175567  23694.144989   \n",
       "20110111145900  -84085.400902          NaN  127954.701121 -26211.960777   \n",
       "...                       ...          ...            ...           ...   \n",
       "20220628145900   77169.597465  -278.548730   54511.866699  -1677.507868   \n",
       "20220629145900   24883.852252  4527.928752   33801.268039  -2549.251789   \n",
       "20220630145900 -102873.911478  6945.409938   72325.300393   5131.850081   \n",
       "20220701145900  -94179.922678  9603.507709   55261.984607  -8021.827359   \n",
       "20220704145900  -39570.297701 -7580.100849   79102.660535  -5910.865578   \n",
       "\n",
       "                          bu             c             cf             cs  \\\n",
       "targettime                                                                 \n",
       "20110105145900           NaN  33939.361097  367294.714956            NaN   \n",
       "20110106145900           NaN  27779.771169  457631.239865            NaN   \n",
       "20110107145900           NaN  40763.848331  286555.672505            NaN   \n",
       "20110110145900           NaN  44799.597521   36559.662631            NaN   \n",
       "20110111145900           NaN   8358.608784   14672.876389            NaN   \n",
       "...                      ...           ...            ...            ...   \n",
       "20220628145900 -19989.916041  34700.073258  129343.778576  140959.582861   \n",
       "20220629145900 -65895.663763 -24075.222624  136134.094189   25908.759588   \n",
       "20220630145900  25719.530177 -22103.394805   21874.988824   73083.851572   \n",
       "20220701145900  55088.478846 -54922.312436  137920.914090  155869.445901   \n",
       "20220704145900  19176.908797  14232.245642  199673.269788  180789.262642   \n",
       "\n",
       "                           cu             eb  ...             sc  \\\n",
       "targettime                                    ...                  \n",
       "20110105145900  191791.127128            NaN  ...            NaN   \n",
       "20110106145900  240529.928927            NaN  ...            NaN   \n",
       "20110107145900  260677.339207            NaN  ...            NaN   \n",
       "20110110145900  196880.247479            NaN  ...            NaN   \n",
       "20110111145900   79629.250451            NaN  ...            NaN   \n",
       "...                       ...            ...  ...            ...   \n",
       "20220628145900   11268.134809   64114.309836  ...   36309.197501   \n",
       "20220629145900   28197.505165  217731.475909  ...   73843.014761   \n",
       "20220630145900  -40603.948710  265531.496865  ...  225615.343157   \n",
       "20220701145900  -41396.830603  126287.618512  ...  177346.164335   \n",
       "20220704145900  -21643.063473  272607.100164  ...  125753.543618   \n",
       "\n",
       "                           sn            sp            sr             ss  \\\n",
       "targettime                                                                 \n",
       "20110105145900            NaN           NaN -52059.370350            NaN   \n",
       "20110106145900            NaN           NaN -29702.999753            NaN   \n",
       "20110107145900            NaN           NaN  -6268.152713            NaN   \n",
       "20110110145900            NaN           NaN  32935.541456            NaN   \n",
       "20110111145900            NaN           NaN  13982.923854            NaN   \n",
       "...                       ...           ...           ...            ...   \n",
       "20220628145900 -212970.595343  91883.658490   2908.335777   44915.672785   \n",
       "20220629145900 -408747.957618   1885.151015 -22577.143987  187623.082822   \n",
       "20220630145900 -316569.198183 -90166.633283 -27060.971012  224714.707555   \n",
       "20220701145900 -344400.305158  46029.510392  26589.697596   98402.242928   \n",
       "20220704145900 -400257.038097 -12051.023072  -6882.031521  125058.299495   \n",
       "\n",
       "                           ta              v              y             zn  \\\n",
       "targettime                                                                   \n",
       "20110105145900  -78784.288752 -243558.934565  -46265.704896  256696.835487   \n",
       "20110106145900  -60032.437516 -114014.645588  -30447.038129  175266.290243   \n",
       "20110107145900  -79883.521519 -187756.501442   26006.960260   98920.240483   \n",
       "20110110145900  -51472.175158 -174938.981510   39510.251762  169003.864520   \n",
       "20110111145900  -37275.606641 -105490.470765   11306.349980  135740.407725   \n",
       "...                       ...            ...            ...            ...   \n",
       "20220628145900  138278.736625  -65655.316959   20833.954965  -10895.941307   \n",
       "20220629145900 -181526.591093   32965.590550 -124420.037119  -54524.222796   \n",
       "20220630145900   66492.790990  -57780.319257 -133711.918088   -5287.531938   \n",
       "20220701145900  -27899.373475    4457.794484 -114481.492734   29828.982011   \n",
       "20220704145900  131546.742103  -67877.035916 -109800.228568  117040.177171   \n",
       "\n",
       "                totalCloseValue  \n",
       "targettime                       \n",
       "20110105145900     9.682027e+05  \n",
       "20110106145900     1.137293e+06  \n",
       "20110107145900     1.116347e+06  \n",
       "20110110145900     8.439784e+05  \n",
       "20110111145900     3.028461e+05  \n",
       "...                         ...  \n",
       "20220628145900     2.656586e+05  \n",
       "20220629145900     3.376917e+04  \n",
       "20220630145900     4.554968e+05  \n",
       "20220701145900     5.855003e+05  \n",
       "20220704145900     1.285433e+06  \n",
       "\n",
       "[2787 rows x 38 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#生成收盘市值表\n",
    "close_value_df = positiondf.mul(closepricedf) #收盘市值=各品种持有份额*收盘价格\n",
    "close_value_df['totalCloseValue'] = close_value_df.apply(lambda x:x.sum(), axis=1) #生成当日收盘总市值\n",
    "close_value_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cash</th>\n",
       "      <th>fee</th>\n",
       "      <th>netcash</th>\n",
       "      <th>totalCloseValue</th>\n",
       "      <th>turnover</th>\n",
       "      <th>totalPosition</th>\n",
       "      <th>pnl</th>\n",
       "      <th>netpnl</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>datetime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-01-05</th>\n",
       "      <td>3.179731e+04</td>\n",
       "      <td>813.575924</td>\n",
       "      <td>3.098374e+04</td>\n",
       "      <td>9.682027e+05</td>\n",
       "      <td>-968202.688961</td>\n",
       "      <td>0.968203</td>\n",
       "      <td>1.000000e+06</td>\n",
       "      <td>9.991864e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-06</th>\n",
       "      <td>-1.073109e+05</td>\n",
       "      <td>248.544099</td>\n",
       "      <td>-1.083730e+05</td>\n",
       "      <td>1.137293e+06</td>\n",
       "      <td>-139108.233287</td>\n",
       "      <td>1.137293</td>\n",
       "      <td>1.029982e+06</td>\n",
       "      <td>1.028920e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-07</th>\n",
       "      <td>-1.222800e+05</td>\n",
       "      <td>266.523649</td>\n",
       "      <td>-1.236086e+05</td>\n",
       "      <td>1.116347e+06</td>\n",
       "      <td>-14969.065831</td>\n",
       "      <td>1.116347</td>\n",
       "      <td>9.940670e+05</td>\n",
       "      <td>9.927384e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-10</th>\n",
       "      <td>1.535929e+05</td>\n",
       "      <td>277.409545</td>\n",
       "      <td>1.519869e+05</td>\n",
       "      <td>8.439784e+05</td>\n",
       "      <td>275872.929937</td>\n",
       "      <td>0.843978</td>\n",
       "      <td>9.975714e+05</td>\n",
       "      <td>9.959653e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-11</th>\n",
       "      <td>7.006882e+05</td>\n",
       "      <td>266.249919</td>\n",
       "      <td>6.988159e+05</td>\n",
       "      <td>3.028461e+05</td>\n",
       "      <td>547095.295128</td>\n",
       "      <td>0.302846</td>\n",
       "      <td>1.003534e+06</td>\n",
       "      <td>1.001662e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-28</th>\n",
       "      <td>4.289415e+06</td>\n",
       "      <td>860.324238</td>\n",
       "      <td>3.033213e+06</td>\n",
       "      <td>2.656586e+05</td>\n",
       "      <td>74951.180347</td>\n",
       "      <td>0.265659</td>\n",
       "      <td>4.555073e+06</td>\n",
       "      <td>3.298871e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-29</th>\n",
       "      <td>4.537831e+06</td>\n",
       "      <td>915.909562</td>\n",
       "      <td>3.280713e+06</td>\n",
       "      <td>3.376917e+04</td>\n",
       "      <td>248416.604041</td>\n",
       "      <td>0.033769</td>\n",
       "      <td>4.571600e+06</td>\n",
       "      <td>3.314482e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-30</th>\n",
       "      <td>4.107692e+06</td>\n",
       "      <td>786.667601</td>\n",
       "      <td>2.849787e+06</td>\n",
       "      <td>4.554968e+05</td>\n",
       "      <td>-430139.767551</td>\n",
       "      <td>0.455497</td>\n",
       "      <td>4.563188e+06</td>\n",
       "      <td>3.305284e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-07-01</th>\n",
       "      <td>3.977388e+06</td>\n",
       "      <td>793.060278</td>\n",
       "      <td>2.718690e+06</td>\n",
       "      <td>5.855003e+05</td>\n",
       "      <td>-130303.629722</td>\n",
       "      <td>0.585500</td>\n",
       "      <td>4.562888e+06</td>\n",
       "      <td>3.304190e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-07-04</th>\n",
       "      <td>3.291245e+06</td>\n",
       "      <td>688.360736</td>\n",
       "      <td>2.031859e+06</td>\n",
       "      <td>1.285433e+06</td>\n",
       "      <td>-686142.768355</td>\n",
       "      <td>1.285433</td>\n",
       "      <td>4.576678e+06</td>\n",
       "      <td>3.317292e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2787 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                    cash         fee       netcash  totalCloseValue  \\\n",
       "datetime                                                              \n",
       "2011-01-05  3.179731e+04  813.575924  3.098374e+04     9.682027e+05   \n",
       "2011-01-06 -1.073109e+05  248.544099 -1.083730e+05     1.137293e+06   \n",
       "2011-01-07 -1.222800e+05  266.523649 -1.236086e+05     1.116347e+06   \n",
       "2011-01-10  1.535929e+05  277.409545  1.519869e+05     8.439784e+05   \n",
       "2011-01-11  7.006882e+05  266.249919  6.988159e+05     3.028461e+05   \n",
       "...                  ...         ...           ...              ...   \n",
       "2022-06-28  4.289415e+06  860.324238  3.033213e+06     2.656586e+05   \n",
       "2022-06-29  4.537831e+06  915.909562  3.280713e+06     3.376917e+04   \n",
       "2022-06-30  4.107692e+06  786.667601  2.849787e+06     4.554968e+05   \n",
       "2022-07-01  3.977388e+06  793.060278  2.718690e+06     5.855003e+05   \n",
       "2022-07-04  3.291245e+06  688.360736  2.031859e+06     1.285433e+06   \n",
       "\n",
       "                 turnover  totalPosition           pnl        netpnl  \n",
       "datetime                                                              \n",
       "2011-01-05 -968202.688961       0.968203  1.000000e+06  9.991864e+05  \n",
       "2011-01-06 -139108.233287       1.137293  1.029982e+06  1.028920e+06  \n",
       "2011-01-07  -14969.065831       1.116347  9.940670e+05  9.927384e+05  \n",
       "2011-01-10  275872.929937       0.843978  9.975714e+05  9.959653e+05  \n",
       "2011-01-11  547095.295128       0.302846  1.003534e+06  1.001662e+06  \n",
       "...                   ...            ...           ...           ...  \n",
       "2022-06-28   74951.180347       0.265659  4.555073e+06  3.298871e+06  \n",
       "2022-06-29  248416.604041       0.033769  4.571600e+06  3.314482e+06  \n",
       "2022-06-30 -430139.767551       0.455497  4.563188e+06  3.305284e+06  \n",
       "2022-07-01 -130303.629722       0.585500  4.562888e+06  3.304190e+06  \n",
       "2022-07-04 -686142.768355       1.285433  4.576678e+06  3.317292e+06  \n",
       "\n",
       "[2787 rows x 8 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cash = 1000000 #初始现金\n",
    "netcash = 1000000 #初始净现金\n",
    "total_info_df = {} #存放所有日交易汇总数据\n",
    "\n",
    "for time in tradetime:\n",
    "    #每日现金余额\n",
    "    cash += delta_cash_df.loc[time][\"turnover\"] #把cash和每日现金变化依次累加\n",
    "    #每日净现金余额 = 每日现金 - 此前累计交易费用\n",
    "    netcash += delta_cash_df.loc[time][\"turnover\"]\n",
    "    netcash -= fee_df.loc[time][\"totalfee\"]\n",
    "    #每日pnl = 现金余额 + 账户市值\n",
    "    pnl = cash + close_value_df.loc[time][\"totalCloseValue\"]\n",
    "    #每日netpnl(净现金余额加账户市值)\n",
    "    netpnl = netcash + close_value_df.loc[time][\"totalCloseValue\"]\n",
    "    \n",
    "    info = []   #存放日交易汇总数据\n",
    "    info.append(cash) #添加每日现金余额\n",
    "    info.append(fee_df.loc[time][\"totalfee\"])#添加每日交易费用\n",
    "    info.append(netcash) #添加每日净现金余额\n",
    "    info.append(close_value_df.loc[time][\"totalCloseValue\"]) #添加每日收盘市值\n",
    "    info.append(delta_cash_df.loc[time][\"turnover\"]) #添加现金流,turnover\n",
    "    info.append(targetdf.loc[time][\"totalposition\"]) #添加总仓位\n",
    "    info.append(pnl)\n",
    "    info.append(netpnl)\n",
    "    total_info_df[time[:8]]=info #键为YYYYMMDD日期，此处为str格式，后续会调整为datetime格式，方便绘图\n",
    "\n",
    "total_info_df = pd.DataFrame(total_info_df).T  #转置，每一行从每一个指标变为每一个时间点\n",
    "\n",
    "#设置列名，分别代表当日现金余额，交易费用总计，当日净现金余额，当日账户收盘市值，turnover, pnl, netpnl\n",
    "total_info_df.columns = [\"cash\",\"fee\",\"netcash\",\"totalCloseValue\",\"turnover\",\"totalPosition\",\"pnl\",\"netpnl\"]\n",
    "total_info_df[\"datetime\"] = pd.to_datetime(total_info_df.index) #统一第一列格式\n",
    "total_info_df = total_info_df.set_index(\"datetime\") #将时间列重新设置为行标签\n",
    "total_info_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20110105\n",
      "20220630\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cash</th>\n",
       "      <th>fee</th>\n",
       "      <th>netcash</th>\n",
       "      <th>totalCloseValue</th>\n",
       "      <th>turnover</th>\n",
       "      <th>totalPosition</th>\n",
       "      <th>pnl</th>\n",
       "      <th>netpnl</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>datetime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-01-05</th>\n",
       "      <td>3.179731e+04</td>\n",
       "      <td>813.575924</td>\n",
       "      <td>3.098374e+04</td>\n",
       "      <td>9.682027e+05</td>\n",
       "      <td>-9.682027e+05</td>\n",
       "      <td>0.968203</td>\n",
       "      <td>1.000000e+06</td>\n",
       "      <td>9.991864e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-06</th>\n",
       "      <td>-1.073109e+05</td>\n",
       "      <td>248.544099</td>\n",
       "      <td>-1.083730e+05</td>\n",
       "      <td>1.137293e+06</td>\n",
       "      <td>-1.391082e+05</td>\n",
       "      <td>1.137293</td>\n",
       "      <td>1.029982e+06</td>\n",
       "      <td>1.028920e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-07</th>\n",
       "      <td>-1.222800e+05</td>\n",
       "      <td>266.523649</td>\n",
       "      <td>-1.236086e+05</td>\n",
       "      <td>1.116347e+06</td>\n",
       "      <td>-1.496907e+04</td>\n",
       "      <td>1.116347</td>\n",
       "      <td>9.940670e+05</td>\n",
       "      <td>9.927384e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-10</th>\n",
       "      <td>1.535929e+05</td>\n",
       "      <td>277.409545</td>\n",
       "      <td>1.519869e+05</td>\n",
       "      <td>8.439784e+05</td>\n",
       "      <td>2.758729e+05</td>\n",
       "      <td>0.843978</td>\n",
       "      <td>9.975714e+05</td>\n",
       "      <td>9.959653e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-01-11</th>\n",
       "      <td>7.006882e+05</td>\n",
       "      <td>266.249919</td>\n",
       "      <td>6.988159e+05</td>\n",
       "      <td>3.028461e+05</td>\n",
       "      <td>5.470953e+05</td>\n",
       "      <td>0.302846</td>\n",
       "      <td>1.003534e+06</td>\n",
       "      <td>1.001662e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-24</th>\n",
       "      <td>5.152144e+06</td>\n",
       "      <td>942.941042</td>\n",
       "      <td>3.897696e+06</td>\n",
       "      <td>-5.563774e+05</td>\n",
       "      <td>1.382784e+06</td>\n",
       "      <td>-0.556377</td>\n",
       "      <td>4.595767e+06</td>\n",
       "      <td>3.341319e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-27</th>\n",
       "      <td>4.214464e+06</td>\n",
       "      <td>893.912177</td>\n",
       "      <td>2.959122e+06</td>\n",
       "      <td>3.471546e+05</td>\n",
       "      <td>-9.376807e+05</td>\n",
       "      <td>0.347155</td>\n",
       "      <td>4.561618e+06</td>\n",
       "      <td>3.306276e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-28</th>\n",
       "      <td>4.289415e+06</td>\n",
       "      <td>860.324238</td>\n",
       "      <td>3.033213e+06</td>\n",
       "      <td>2.656586e+05</td>\n",
       "      <td>7.495118e+04</td>\n",
       "      <td>0.265659</td>\n",
       "      <td>4.555073e+06</td>\n",
       "      <td>3.298871e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-29</th>\n",
       "      <td>4.537831e+06</td>\n",
       "      <td>915.909562</td>\n",
       "      <td>3.280713e+06</td>\n",
       "      <td>3.376917e+04</td>\n",
       "      <td>2.484166e+05</td>\n",
       "      <td>0.033769</td>\n",
       "      <td>4.571600e+06</td>\n",
       "      <td>3.314482e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-30</th>\n",
       "      <td>4.107692e+06</td>\n",
       "      <td>786.667601</td>\n",
       "      <td>2.849787e+06</td>\n",
       "      <td>4.554968e+05</td>\n",
       "      <td>-4.301398e+05</td>\n",
       "      <td>0.455497</td>\n",
       "      <td>4.563188e+06</td>\n",
       "      <td>3.305284e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2785 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                    cash         fee       netcash  totalCloseValue  \\\n",
       "datetime                                                              \n",
       "2011-01-05  3.179731e+04  813.575924  3.098374e+04     9.682027e+05   \n",
       "2011-01-06 -1.073109e+05  248.544099 -1.083730e+05     1.137293e+06   \n",
       "2011-01-07 -1.222800e+05  266.523649 -1.236086e+05     1.116347e+06   \n",
       "2011-01-10  1.535929e+05  277.409545  1.519869e+05     8.439784e+05   \n",
       "2011-01-11  7.006882e+05  266.249919  6.988159e+05     3.028461e+05   \n",
       "...                  ...         ...           ...              ...   \n",
       "2022-06-24  5.152144e+06  942.941042  3.897696e+06    -5.563774e+05   \n",
       "2022-06-27  4.214464e+06  893.912177  2.959122e+06     3.471546e+05   \n",
       "2022-06-28  4.289415e+06  860.324238  3.033213e+06     2.656586e+05   \n",
       "2022-06-29  4.537831e+06  915.909562  3.280713e+06     3.376917e+04   \n",
       "2022-06-30  4.107692e+06  786.667601  2.849787e+06     4.554968e+05   \n",
       "\n",
       "                turnover  totalPosition           pnl        netpnl  \n",
       "datetime                                                             \n",
       "2011-01-05 -9.682027e+05       0.968203  1.000000e+06  9.991864e+05  \n",
       "2011-01-06 -1.391082e+05       1.137293  1.029982e+06  1.028920e+06  \n",
       "2011-01-07 -1.496907e+04       1.116347  9.940670e+05  9.927384e+05  \n",
       "2011-01-10  2.758729e+05       0.843978  9.975714e+05  9.959653e+05  \n",
       "2011-01-11  5.470953e+05       0.302846  1.003534e+06  1.001662e+06  \n",
       "...                  ...            ...           ...           ...  \n",
       "2022-06-24  1.382784e+06      -0.556377  4.595767e+06  3.341319e+06  \n",
       "2022-06-27 -9.376807e+05       0.347155  4.561618e+06  3.306276e+06  \n",
       "2022-06-28  7.495118e+04       0.265659  4.555073e+06  3.298871e+06  \n",
       "2022-06-29  2.484166e+05       0.033769  4.571600e+06  3.314482e+06  \n",
       "2022-06-30 -4.301398e+05       0.455497  4.563188e+06  3.305284e+06  \n",
       "\n",
       "[2785 rows x 8 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#设置关注时间区间的起始日期\n",
    "import datetime\n",
    "#startday = input() #输入起始日期，格式为20110105\n",
    "#endday = input()   #输入结算日期，格式为20220630\n",
    "startday = datetime.datetime.strptime(input(),'%Y%m%d') #输入起始日期，将其转换为日期格式\n",
    "endday = datetime.datetime.strptime(input(),'%Y%m%d')    #输入结算日期，将其转换为日期格式\n",
    "index1 = list(total_info_df.index).index(startday)  #返回起始日期在total_info_df第一列的下标\n",
    "index2 = list(total_info_df.index).index(endday)    #返回结算日期在total_info_df第一列的下标\n",
    "info_df = total_info_df.iloc[index1:index2+1,:]  #截至结算日的所有交易指标\n",
    "info_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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bdrokksu0T777KMjjzxSmzdv1pw5c3T00UerU6dO6t69u2bNmqWJEyfq008/1Q033KAOHTpozpw5OvTQQ3X11VfroIMO0r777quffvpJkjRkyBBdeOGFOvTQQ9WyZUs9+eSTCX6nAAAAAFB2vfii5Jy0enXs/Rs2WLtiRbDthhukF17I+7rLlgXLK1cWro/JqEKiO5Crq6+Wpk8v2mt26CA9/ni+h82ePVvDhg3Tiy++qDPOOEMjRozQq6++qqFDh6pVq1aaPHmyBg4cqNGjR+uEE05Qr169dNppp/3v/I0bN2rixIn6/vvvdeGFF+r333+XJM2aNUtjxozR+vXr1bp1a1166aWqWLFi0b5HAAAAAEC+ws91Fy6U6taN3jd2rHTYYdLhh0tNmki77irNnSvVry/NmJH7NWfOlPbeO1hfsUJq1KjIu55QyRtESKDddttNHTp0kCR16tRJ8+fP18SJE3X66af/75itW7fmev5ZZ50lSTr44IO1bt06rVmzRpJ03HHHqXLlyqpcubIaNWqkZcuWqVmzZsX2PgAAAAAAsXlvrXM59z3zjLWjR0sVK9rz6HLlpMqVpaeflq68UmrVKud5jz4avZ7HbWPKSt4gQhwZA8WlcuXK/1suX768li1bpjp16mh6nJkRLtu3MLye/boZlPcEAAAAgKSSlSV9+22wvn271LChLXfqJH3xhU37GCuIEB4CEXluaUNNhDjUqlVLu+22m95//31Jkvdev/zyiySpZs2aWr9+fdTx7777riRpwoQJql27tmrXrl2yHQYAAAAA5CmciZDdsmXSmjVSmzbBtgYNrH3rLWs3bYp97tKl1t5xh7XbthW6m0mHIEKc3n77bb388stq37699tlnH33yySeSpN69e+vhhx/Wfvvtpzlz5kiS6tatq4MOOkgDBgzQyy+/nMhuAwAAAABiCAcRsieIb95s7aBBUlpa9Lbq1a2NDCK8/750333SsGHSuHHS0UdbLQWpdGYiJO9whgRp0aLF/wohStL111//v+VRo0blOL5r1645png89dRTdf/990dtGzJkSNR65GtsyJ7zAgAAAAAoNkuXWkFFSVq1ygIJFSpY5sCkSba9cuUgk2DLFmsrVpTKl5c2brT1v/+Wzjgj+tq77WbHSWQiAAAAAACQ8nbeOahf0LOnFU6UbBjCOefYcpUqVljx7rul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ctFdCwBQIvIdzuCcO1jSBklveO/3jbH/UEnXe+977cgLM5wBAABp5UqpQQNbbtXKMgymTYs+5scfpaOPltatC7Y98ohN7VihgtUBTDnOWbt6tQUTcrN9u3T44TbVYbzTGT72mPR//2dFEmvUCIYX7LyzBQNq1rT199+34EH79jZU4LXXbD08VGCPPYL0/nvusXT/WLKypL//tg/zwANtKsPwTAR52bRJatnSnvS/8IK01142TeKUKdZWqmSRpY4dY7/Hq6/OuX3VKumkk6TFi61PdepY5kG3bhYQeeEF+z38849V5Tz+eDunZ8/gMwmbNUuqW9f6AgAocwo8nMF7/72kVfkdBwAAdlz44fHo0Xb/uSrG/3HHjbMAQt260pFH2raePe2heEoGECL98kve+6dNs5T/gQPjv+ann1oGwscfBwGEbt0sDf/SS+2XvGZNcKM/fLhFYy6+OLrWwMiR9lRfCgII++xjgYhBg2y9Sxe7+W7VypZr1w6mX8zLq69aDYZlyyxboHVrG1bx669S8+YWQJDsA96+3TI2srLsxv6llyyzIJZ69SzLY+5cq5+wbp1lW7z2mv0u09Isk+LAA6UhQ2y4xhFH5AwgSEFQAwCACEVVE+FA59wvzrkvnXP75HaQc66fcy7dOZe+InLqIgAAyqivv7Yh6Yceavd/sYIIK1daVvmKFXZfO368PTxPaeXLW/vhh9a+9pql9Wf37rvB8syZsYc//PWXpePPm2f7x46N3l+3rv3SJKtZUL++PY1fs8ayBvbaK3Yf99rLshUiPf+8tOeelvafni59/nmwzzl7rfxqPTz8sPU3rHdva084wQo1Zhces+KcBRsuuij4/cVy4YUWIJk1y95rrx1KFgUAIE9FEUSYJmlX7317SU9J+ji3A733L3jv07z3aQ3DRYEAAChjpk2TbrnF7gXfe88yCpyzB9Dr10svvmjF68O+/toy8MuXt4L93bolru9FJnzj/uefVtDwggukFi2igwQTJljafpMmtr733pYZkJVl66tWSV272o31q68GP1JQNEIKih/ef3+wbcsWa885J/++Tpxo/W3XLnpoQadOdpMeqVYtCyJMmmTFLmJNXxjOYpCkXXbJezhHQZQrZ0GORx6RZsywrAMAAIpIocsxee/XRSx/4Zx71jnXwHsfo3oRAABlz/vvW9b+4sV2z/znn3b/26SJPRAPZ+ofeqi1/fpZUOHii612Xri2X6kSLg44cWJ0+sWQIdKdd9ry009b+803NoxAssyFyy6zGgUjRtj5YXffbW3t2tIXX9hrvP12MD3jTTfZU/oePSzlf489bEhBfg48MMiCiJX2H6l2bZv1IHzjfswxVtMhLBwAOewwyxDIXpSxqNSpY1U4AQAoYoUOIjjnGkta5r33zrnOsuyGlYXuGQAAxWjzZrsnrFateF/nrLNsyH1206fnHJIQuT5kiGUfhGfbK+yMekkhM9Oekr/3nhX9kyz14p13gmM+/9xu+vv3t6foxx5rGQiTJ9sN/LBhlp3w8svBeP3rrpM6dJD69LH1sWOtoGKNGtKVV0b3oVGj+GoWxJJfAEGSjjoqugDjDz9YfYPGje0Ld/bZtv2UU6TLLy9YPwAASKB4ZmcYJulQSQ0kLZN0h6SKkuS9H+qcu1zSpZIyJG2WdK33fmLsqwWYnQEAUFAvvWRP7zdvzntoeG5efNGe9h90kNUb+PNPy24v7Gxz3tt9cuS0i+H7zj33tPvLL7+U7rhDOvfc2Nf49lurcxfpwQejM+BTUvgXc+ON9oYkywYYNsyGBCxdGn38kCH2c/PN0r33Btu9l8aMsfoBGzda+8kntm/LFvtS1K1bEu8otk2b4stuePvtIKAAAEASKszsDGd573f23lf03jfz3r/svR/qvR8a2v+0934f73177/0B8QQQAAAojEsusYL18dxYf/yxDU+XpO++s+KE4aL8EydaAEGyun6FddFFNmx+2zarabDLLra9d297nSeflGbPzj2AINmsCwMGRG8LD3NIaYsWWfvUU8G2rVsteyAcQDj66GDfkCHWtmsXfR3nbHjA7bfberhegmTVJxMZQJCiU1v23z/2MbfdJp14Ysn0BwCAIlZUszMAAFAiIgvvjxqV97GLF0snn2zD06dNsxv0Aw4I9h93nM3416CBBRjy8+uvuRfenzLFavrNnGlZ9Glp0sKFtu/ZZ/O/dqTnnpOuvz5Yb9x4x85PSuHIyebN1rZoIV19tfTAA8ExrVvnPG/ffWNf75prrGbC4MFF2cui9fjjNiYl7PzzbVjGXXfFl60AAEASKnRNBAAASsoXX0iPPmrLderYDHaLF9u097E88kiw3KmTtXPn2gwHs2ZJLVvatnnzpDlzLNDwzjvSSSflnAFh4UKrWXDyycGshJFmzAiWt2+3QoqSHVuQh+ORD+Bze38pY+tWm2lBCmZfGD5c6tLFlr/7zsaVVK4sPfGEfVhDh0rPPJP79IsVK1qBxWS2006W+lKhgqWmFHa8DAAASYAgAgAg6XlvKf3ff2/rF1xgD6D33NNmPrj66tjnTZhgWQg//mjrt9xi950bNwYBBMmWJ060a379tQUq+vSx2n0VK9oxBx9s7UcfxX6tP/+0moFvvmmzBjZpIv3zT8FqNkj2+uXL23ULeo2kkb3eQblyUps2wXrk7AUffGBZCp06BdM1pqqqVYPAQcp/iAAAGIYzAACS3qhRQQDh+uttdr9WrWzYQHjIwPDh0qefRp83Z44V7Q+79FIr/L/HHtHHde8urVtnAYSwN9+0zHPJZuybPz/6nEmTpDfesIkGsrIsCNG5sxXdP/tsK6BY2PvGs88OZjtMaatXR69fdZVUq1bsY089NUgbSVVt21pbv35i+wEAQDEgEwEAkFS2bLGC/L162QPqDz6QTj/d6tXNmiU1bx4cW62azQj477/BNIrbtln2wH//2b3r7rtb9sA770TX4IvUu7fN1PDRR/aAvFUry06YNcuGNYwYERxbubJd98ADg20HHGDDJI4+2mr7vf120f9eUlr26M4ddySmHyVl1ChpzRqGLwAASiWCCACAhMvKsqEEaWk2fPyxx+znootsSIFktegiAwiStHy5/YRnWJCkVatsKPo339h6586WaXDSSXn3YZdd7AG5ZDUNnAsmFJg92/YPGiRdfrkVWIwUnv3h5JN3+K2XfjNnBsMSfvzRxnjUrp3YPhW3Jk1yj1gBAJDiGM4AAEi4yZOlhx6SzjhDeuGFYHs4gHDvvdKVV+Z+ftu2dnMvST/9ZDMopKfbeuRwhnhVrCjtuqs0cqSUmWlBhFatgikbw9fOjln7slm2TNp7bxsL8sEHlrJxxhmJ7hUAACgEgggAgIT7669gedQom+kvchj9TTcFBQ5j+fVX6bTTbPmEE2zmhv/7PxvuUKNGwfp0993S1Kn2EH32bCviuOuutu+HH3Ief/rplr2ACF99ZW2dOlYsAgAApDyCCACAKKtXWyFByWZFWL3ahndnZRXfa4aLFj7wgLXdutl95wUX2PCGcrn83+rRR6UHH7Tl1q1z7r/ssoLf2J9zjrT//tIll9jvoEOHIBNh7Fhrn39euu46W47MoEDI11/b2JKVK4mwAABQSjgfnq+5hKWlpfn03PJBAQDFbu1ae1p/yy02A1/dulLNmtLxx1sa/yuvWIZA+Mb+ySelK64o2GuNGiV98ol0/vnSWWdZXb0+fSw4sHWrNGCA3W8uXmxD5uvXl6pX37HX8D462NCkic3ckFsAIh5//GGBjHPPtZkdKlSQ6tWzoEKFClY7ITNTWr/egh6IMGeOTYNRpYq0eXOiewMAAHaQc26q9z4t+3YKKwJAGfXAA/bTtKnUv7902GF28z5ypO2/8MLo40eMyD+IsGqVZS20bGnrWVlS377BbAVDh1p7/vk2e8LSpdIjj9hD6mOPtX3hp/07KvuD7kMPLVwAQbLh/OFpHsP23NO2Vapk6+XLE0CIafRoa/MqZgEAAFIOwxkAoAz69VebzlCyAIIkjRljte8kGyYg2dP2N96w5XHj7MY/L3vuaVMqPv64BQjeey8IIFSuLLVvL332ma0/8YQFECTLgHjiicK/ry5drH36aZvdoTi0amUts/fl4s037Zd/7722fvfdie0PAAAoUmQiAEAZs26d3czn5pdfpHbtLI2/Th17wv/xx9KHH0oNG0obNsQearB1qw19l6RrrrGfsOxDIR57LNh/4402teLOOxf2nVmtgi1bijczIBxESNBowOT299+WehK2775BygYAACgVyEQAgDJmyJCc284+W7r1VstGaNfOttWtGwwRGDFCevFFW77tttjXnTgx9vazz845DOLSS222v/btpfvuK5oAgmTD74t7aEG4gOOaNcX7Oilpxozo9alTE9MPAABQbAgiAEApk5kp3XCD9Omntr5xo62np9u2xx6z6QhXrgweEt99t/0cemju1734Yunoo+38KVNy7p82zdrXXrMiieFs9hNOyHls5crSjz9K06cXvm5BScsri6PMmzPH2pUrLVWDLAQAAEodZmcAgFJm1CjpmGOsSOJ770lXXy399lv0MT//bFMWvvuuZQksXBjfGP81a2zGPu+lnj2lYcNslofffpPuuUdasED699/g+C1bLDugNMnMtFoREkMaongvnXiiNH68TV8BAABSGrMzAEApsH27FUScOtUe+o4caU/yN2wInuiHCyGuXCn16JHzGjNm2KwDknTmmfYTrzp1pPvvl667Tvryy+ihA1Wq5KyhV9oCCJLNxoAY7rvPqmbec0+iewIA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etmNHRv9eXz9dbD+wQfBcevWBZ9VLOedF5x36635vy4AAEAxkJTuY9zLE0QohGXLvF++3JY3bPD+pN2m+8ra7M86bVtiO5akpkyxm9zJk73fVshf0apV3s+eHdz3ZGR4/8MPds/w5ZeFu/bKld6PH5/3v/HjtWWL9+PGeT9tmvdHHBF9L/D2296/+673xxzjfY0a0fs6dfL+uee8b97c+w4dvN++3fvMTO/nzfP+1Ve937w5+nXWrrX7pgYN7PwTTrDfTWam9+ee6/1hh3m/eLH306d736OH940aeX/++Ra0mDCh8O8zpWVmer9mjUV4nnrK+ypVgg/i1Vfzvhlv184CAyNHBtfLyvL+6qvtRrBnT7uxDH8YdepEn3/CCd7fcYd9GJHbn3vOvjybN3v/ySc5X/fpp73/91/bn54ebL/8cu/vvtt75yxQEXlOr17WVq+e8/2vXRvf7yory270K1f2/q+/cu7/9tvYv6cqVbx//337w507145t186+4JHH/d//7fjnd+ut9h8W773/8cecr12u3I4FezIz7X3On2/nP/+8bc8ewInlhRdy/67syH9QMjOt35HnH3BAEPgBAAAoAQQRisFtutNfp4f9rYO2+n413v7fP/Zma3e/YX0R3IGmmAkTvP/ww+gHd97bPc5bb0X/e7hxY+9//90exq5YsWOv89Zb3tetG1xrzz1z/nv97bcL9h62b/e+Wze7xkMPBdtnzrR/13u/Y/cChxySs2/ly3u/ZEn0cStWeP/TT97ff789wAzvf/NNO+fMM72/7bbo66Slef/ww97fdZfd00ne77yz/b4RQ1aW90OGeN+kid3M9+4dOy2kQgW7YYvctssu9gUfN877Nm28X7TInlZHHjN9ut1wDhpk687FvpkcMCBn1CjWz4EH2g17eP266+xLMHlyzvf299/R57Zs6f2MGRZp69vX+/Xrvd+40bIoPv+8cL/Hf/4JvpQLF0bve/BB/7+n52ecEfTnrLNyXifyhrtRI+8ff7xw/fLeghTZf49t2xbsWtu22Wd4++22fv31dr1dd7WgSGamBS9uu80ieN7bZ1u1qvevvRa8/pgx9h+WHTVmTPT7mDSpYO8DAACggAgiFIH3Wg32n9U403vv/eZNWf/7x91mVc7xD9cPX1md2M6WsPXrox+c3XST/Rv7iiuifzWPPRb7fumYY+wh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\n",
      "text/plain": [
       "<Figure size 1296x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#夏普比率\n",
    "daily_return = info_df[\"netpnl\"].pct_change() #计算每日增长率\n",
    "avg_return = daily_return.mean() #计算增长率均值\n",
    "std_return = daily_return.std()  #计算增长率标准差\n",
    "sharpe = avg_return / std_return * 15.8 #计算SharpeRatio\n",
    "title = \"SharpeRatio:\" + str(round(sharpe,2)) + \", \"\n",
    "\n",
    "#计算平均turnover\n",
    "turnover = ((info_df[\"turnover\"].abs()).mean())/1000000\n",
    "title += \"Turnover:\" + str(round(turnover,2)) + \", \" \n",
    "                      \n",
    "#计算AvgLeverage\n",
    "AvgLeverage = (info_df[\"totalPosition\"]).mean()\n",
    "title += \"AvgLeverage:\" + str(round(AvgLeverage,2))\n",
    "\n",
    "#绘制pnl与netpnl，需要注意纵轴起始点是从1而非0开始画！！！\n",
    "plt.figure(figsize=(18,9))\n",
    "pnllst = (info_df['pnl']/1000000).tolist() \n",
    "netpnllst = (info_df['netpnl']/1000000).tolist() \n",
    "time = list(info_df.index) #生成时间列表(X轴数据)\n",
    "plt.plot(time, pnllst, \"blue\", label=\"pnl\")   #添加pnl\n",
    "plt.plot(time, netpnllst, \"red\", label=\"netpnl\") #添加netpnl\n",
    "plt.title(title) #添加标题\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
